How to select multiple column names in specific one level with Python pandas -


there dataframe has multipleindex column. know can use .xs() following code, when want select 1 column name , level name.

df.xs('column_name1', level='column_level1', axis=1) 

in specific case, want select multiple column names following code. (actually doesn't work, because .xs doesn't support way.)

df.xs(['column_name1', 'column_name2'], level='column_level1', axis=1) 

how select multiple column names in specific 1 level?


i show more specific code.

import pandas pd import io  data = u""" column_name1,column_name2,column_name3 column_namea,column_nameb,column_namec 0.1,1,10 0.2,2,20 0.3,3,30 """ df = pd.read_csv(io.stringio(data), header=[0, 1]) df.columns.names = ['column_level1', 'column_level2'] print df 

df this

column_level1 column_name1 column_name2 column_name3 column_level2 column_namea column_nameb column_namec 0                      0.1            1           10 1                      0.2            2           20 2                      0.3            3           30 

and, want make data column name

column_level1 column_name1 column_name2 column_level2 column_namea column_nameb 0                      0.1            1 1                      0.2            2 2                      0.3            3 

you can try select:

print df.select(lambda x: x[0] in ['column_name1','column_name2'], axis=1)  column_level1 column_name1 column_name2 column_level2 column_namea column_nameb 0                      0.1            1 1                      0.2            2 2                      0.3            3 

or get_level_values isin:

print df.loc[:, df.columns.get_level_values('column_level1')                           .isin(['column_name1','column_name2'])]  column_level1 column_name1 column_name2 column_level2 column_namea column_nameb 0                      0.1            1 1                      0.2            2 2                      0.3            3 

Comments