Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get column by number in Pandas?

Tags:

python

pandas

What's the difference between:

Maand['P_Sanyo_Gesloten'] Out[119]:  Time 2012-08-01 00:00:11    0 2012-08-01 00:05:10    0 2012-08-01 00:10:11    0 2012-08-01 00:20:10    0 2012-08-01 00:25:10    0 2012-08-01 00:30:09    0 2012-08-01 00:40:10    0 2012-08-01 00:50:09    0 2012-08-01 01:05:10    0 2012-08-01 01:10:10    0 2012-08-01 01:15:10    0 2012-08-01 01:25:10    0 2012-08-01 01:30:10    0 2012-08-01 01:35:09    0 2012-08-01 01:40:10    0 ... 2012-08-30 22:35:09    0 2012-08-30 22:45:10    0 2012-08-30 22:50:09    0 2012-08-30 22:55:10    0 2012-08-30 23:00:09    0 2012-08-30 23:05:10    0 2012-08-30 23:10:09    0 2012-08-30 23:15:10    0 2012-08-30 23:20:09    0 2012-08-30 23:25:10    0 2012-08-30 23:35:09    0 2012-08-30 23:40:10    0 2012-08-30 23:45:09    0 2012-08-30 23:50:10    0 2012-08-30 23:55:11    0 Name: P_Sanyo_Gesloten, Length: 7413, dtype: int64 

And

Maand[[1]] Out[120]:  &ltclass 'pandas.core.frame.DataFrame'&gt DatetimeIndex: 7413 entries, 2012-08-01 00:00:11 to 2012-08-30 23:55:11 Data columns (total 1 columns): P_Sanyo_Gesloten    7413  non-null values dtypes: int64(1) 

How can I get data by column-indexnumber? And not by an Index-string?

like image 919
Jomme Avatar asked Jun 19 '13 14:06

Jomme


People also ask

How do I get column numbers in Pandas?

You can get the column index from the column name in Pandas using DataFrame. columns. get_loc() method.

How do you call a column by index in Pandas?

You can use the loc and iloc functions to access columns in a Pandas DataFrame. Let's see how. If we wanted to access a certain column in our DataFrame, for example the Grades column, we could simply use the loc function and specify the name of the column in order to retrieve it.

How do I get numeric columns in a data frame?

We can use select_if() function to get numeric columns by calling the function with the dataframe name and isnumeric() function that will check for numeric columns.

How do I get only certain columns in Pandas?

To select a single column, use square brackets [] with the column name of the column of interest.


2 Answers

One is a column (aka Series), while the other is a DataFrame:

In [1]: df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])  In [2]: df Out[2]:    a  b 0  1  2 1  3  4 

The column 'b' (aka Series):

In [3]: df['b'] Out[3]: 0    2 1    4 Name: b, dtype: int64 

The subdataframe with columns (position) in [1]:

In [4]: df[[1]] Out[4]:    b 0  2 1  4 

Note: it's preferable (and less ambiguous) to specify whether you're talking about the column name e.g. ['b'] or the integer location, since sometimes you can have columns named as integers:

In [5]: df.iloc[:, [1]] Out[5]:    b 0  2 1  4  In [6]: df.loc[:, ['b']] Out[6]:    b 0  2 1  4  In [7]: df.loc[:, 'b'] Out[7]: 0    2 1    4 Name: b, dtype: int64 
like image 185
Andy Hayden Avatar answered Oct 04 '22 20:10

Andy Hayden


The following is taken from http://pandas.pydata.org/pandas-docs/dev/indexing.html. There are a few more examples... you have to scroll down a little

In [816]: df1             0         2         4         6 0   0.569605  0.875906 -2.211372  0.974466 2  -2.006747 -0.410001 -0.078638  0.545952 4  -1.219217 -1.226825  0.769804 -1.281247 6  -0.727707 -0.121306 -0.097883  0.695775 8   0.341734  0.959726 -1.110336 -0.619976 10  0.149748 -0.732339  0.687738  0.176444 

Select via integer slicing

In [817]: df1.iloc[:3]            0         2         4         6 0  0.569605  0.875906 -2.211372  0.974466 2 -2.006747 -0.410001 -0.078638  0.545952 4 -1.219217 -1.226825  0.769804 -1.281247  In [818]: df1.iloc[1:5,2:4]            4         6 2 -0.078638  0.545952 4  0.769804 -1.281247 6 -0.097883  0.695775 8 -1.110336 -0.619976 

Select via integer list

In [819]: df1.iloc[[1,3,5],[1,3]]             2         6 2  -0.410001  0.545952 6  -0.121306  0.695775 10 -0.732339  0.176444 
like image 42
pandita Avatar answered Oct 04 '22 21:10

pandita