Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Select multiple ranges of columns in Pandas DataFrame

I have to read several files some in Excel format and some in CSV format. Some of the files have hundreds of columns.

Is there a way to select several ranges of columns without specifying all the column names or positions? For example something like selecting columns 1 -10, 15, 17 and 50-100:

df = df.ix[1:10, 15, 17, 50:100] 

I need to know how to do this both when creating dataframe from Excel files and CSV files and after the data framers created.

like image 642
Alex Avatar asked Dec 21 '16 06:12

Alex


People also ask

How do you select multiple ranges in DF Loc?

Using df[] & loc[] to Select Multiple Columns by NameBy using df[] & pandas. DataFrame. loc[] you can select multiple columns by names or labels. To select the columns by names, the syntax is df.

How do I slice a range of columns in pandas?

To slice the columns, the syntax is df. loc[:,start:stop:step] ; where start is the name of the first column to take, stop is the name of the last column to take, and step as the number of indices to advance after each extraction; for example, you can select alternate columns.


1 Answers

use np.r_

np.r_[1:10, 15, 17, 50:100]  array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 15, 17, 50, 51, 52, 53, 54, 55,        56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,        73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,        90, 91, 92, 93, 94, 95, 96, 97, 98, 99]) 

so you can do

df.iloc[:, np.r_[1:10, 15, 17, 50:100]] 
like image 65
piRSquared Avatar answered Sep 23 '22 07:09

piRSquared