Pandas 根据dataframe第一行中的不同值删除多个列

Pandas 根据dataframe第一行中的不同值删除多个列,pandas,Pandas,我有一个奇怪的数据帧,它有两个级别的标题。第一级构成列标题,第二级构成数据帧的第一行。像这样: Fav-fruit Unnamed1 Unnamed2 Cost Purchsd? Unnamed3 0 Apples Bananas Pears Yes No 1 Apples 0.10 No 2

我有一个奇怪的数据帧,它有两个级别的标题。第一级构成列标题,第二级构成数据帧的第一行。像这样:

     Fav-fruit    Unnamed1     Unnamed2    Cost    Purchsd?  Unnamed3
0    Apples       Bananas      Pears               Yes       No
1    Apples                                0.10              No
2                              Pears       0.30              No
3    Apples                                0.10    Yes
我想根据第二级标题(即第0行)删除一组列。例如,要删除第0行中带有
Apples
Pears
的列,请执行以下操作:

     Fav-fruit    Cost    Purchsd?  Unnamed3
0    Pears                Yes       No
1                 0.10              No
2    Pears        0.30              No
3                 0.10    Yes
真正的dataframe大约有500列,我需要删除其中的60列。我不想将第0行提升为一组新的列标题,因为我不想丢失当前标题

有一种简单的方法可以做到这一点吗?

您可以使用
loc
,布尔掩码是通过反转(
~
)创建的,对于选择第一行使用:


很 完美!这很有效。我很难理解索引,但那个解释真的很有帮助。谢谢您!
mask = df.iloc[0].isin(['Apples','Pears'])
print (mask)
Fav-fruit     True
Unnamed1     False
Unnamed2      True
Cost         False
Purchsd?     False
Unnamed3     False
Name: 0, dtype: bool

print (~mask)
Fav-fruit    False
Unnamed1      True
Unnamed2     False
Cost          True
Purchsd?      True
Unnamed3      True
Name: 0, dtype: bool

print (df.loc[:, ~mask])
  Unnamed1  Cost Purchsd? Unnamed3
0  Bananas   NaN      Yes       No
1      NaN   0.1      NaN       No
2      NaN   0.3      NaN       No
3      NaN   0.1      Yes      NaN