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.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With