Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pandas dataframe select columns in multiindex [duplicate]

I have the following pd.DataFrame:

Name    0                       1                      ... Col     A           B           A            B         ... 0       0.409511    -0.537108   -0.355529    0.212134  ... 1       -0.332276   -1.087013    0.083684    0.529002  ... 2       1.138159    -0.327212    0.570834    2.337718  ... 

It has MultiIndex columns with names=['Name', 'Col'] and hierarchical levels. The Name label goes from 0 to n, and for each label, there are two A and B columns.

I would like to subselect all the A (or B) columns of this DataFrame.

like image 486
wfh Avatar asked Aug 07 '14 18:08

wfh


People also ask

How do I get MultiIndex columns in pandas?

pandas MultiIndex to ColumnsUse pandas DataFrame. reset_index() function to convert/transfer MultiIndex (multi-level index) indexes to columns. The default setting for the parameter is drop=False which will keep the index values as columns and set the new index to DataFrame starting from zero.


1 Answers

There is a get_level_values method that you can use in conjunction with boolean indexing to get the the intended result.

In [13]:  df = pd.DataFrame(np.random.random((4,4))) df.columns = pd.MultiIndex.from_product([[1,2],['A','B']]) print df           1                   2                     A         B         A         B 0  0.543980  0.628078  0.756941  0.698824 1  0.633005  0.089604  0.198510  0.783556 2  0.662391  0.541182  0.544060  0.059381 3  0.841242  0.634603  0.815334  0.848120 In [14]:  print df.iloc[:, df.columns.get_level_values(1)=='A']           1         2           A         A 0  0.543980  0.756941 1  0.633005  0.198510 2  0.662391  0.544060 3  0.841242  0.815334 
like image 53
CT Zhu Avatar answered Oct 06 '22 02:10

CT Zhu