Python 如何将多索引数据框中的第一列放在第二级排除某些列下

Python 如何将多索引数据框中的第一列放在第二级排除某些列下,python,pandas,multi-index,Python,Pandas,Multi Index,这是我的数据框。我想删除级别1中红色的“YTD2017”列,不包括绿色,因为我需要的是数字 我知道“drop”函数,并试图将其放入我的程序中。然而,包括绿地在内的所有“YTD2017”都已下降 那么,如何去掉红色区域并保持绿色区域。换句话说,是否有任何方法可以根据我传递的列名删除colmuns而不影响其他列 谢谢 total.drop('YTD2017',轴=1,层=1,原地=True) 您可以在中为拖放指定值: arrays = [['bar', 'bar', 'baz', 'baz', 'f

这是我的数据框。我想删除级别1中红色的“YTD2017”列,不包括绿色,因为我需要的是数字

我知道“drop”函数,并试图将其放入我的程序中。然而,包括绿地在内的所有“YTD2017”都已下降

那么,如何去掉红色区域并保持绿色区域。换句话说,是否有任何方法可以根据我传递的列名删除colmuns而不影响其他列

谢谢

total.drop('YTD2017',轴=1,层=1,原地=True)

您可以在中为拖放指定值:

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
          ['YTD2017', 'two', 'YTD2017', 'two', 'YTD2017', 'two', 'YTD2017', 'two']]
tuples = list(zip(*arrays))
mux = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])

df = pd.DataFrame(index=[0], columns=mux)
print (df)
first      bar          baz          foo          qux     
second YTD2017  two YTD2017  two YTD2017  two YTD2017  two
0          NaN  NaN     NaN  NaN     NaN  NaN     NaN  NaN

df = (df.loc[:, ~df.columns.get_level_values(0).isin(['foo','qux']) | 
                (df.columns.get_level_values(1) != 'YTD2017')])
print (df)

first      bar          baz       foo  qux
second YTD2017  two YTD2017  two  two  two
0          NaN  NaN     NaN  NaN  NaN  NaN
或者为以下对象创建两个级别值的元组:


第二种方法是,因为这是一个屏幕截图,我需要删除7-9列或更多列。因此,我不方便编写。。。我可以使用其他方法来删除列,比如使用“tilde”函数。例如,使用“~”和drop function反向删除我不需要的列?@MaxxiHuang-
drop
with
~
没有实现,因为
~
可能只使用我的第一个解决方案
df = df.drop([('foo','YTD2017'), ('qux','YTD2017')], axis=1)