在我的数据集中,我的列名是可变的,所以我不知道它的名字,也不知道它出现的顺序。 (并非没有选择)
但是,使用 DataFrame.all() 函数,我可以获得仅限 bool 值的列 ( http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.all.html)。
但是,我的列是“通过”和“失败”而不是 bool 值,我如何识别它们?
我得到的各种表格的例子:
0 1 2
A Pass 3
B Fail 3
0 1 2
A qq Pass
B nn Fail
我希望我的函数在情况 1 中返回 [1],在情况 2 中返回 [2]。
谢谢!
编辑:根据评论,Dataframe.all() 不正确。
请您参考如下方法:
IIUC:
In [75]: df1
Out[75]:
0 1 2
0 A Pass 3
1 B Fail 3
In [76]: df2
Out[76]:
0 1 2
0 A qq Pass
1 B nn Fail
In [81]: df1.columns[df1.isin(['Pass','Fail']).all()]
Out[81]: Index(['1'], dtype='object')
In [82]: df2.columns[df2.isin(['Pass','Fail']).all()]
Out[82]: Index(['2'], dtype='object')
或使用.apply():
In [77]: df1.columns[df1.apply(lambda x: x.isin(['Pass','Fail']).all())]
Out[77]: Index(['1'], dtype='object')
In [78]: df2.columns[df2.apply(lambda x: x.isin(['Pass','Fail']).all())]
Out[78]: Index(['2'], dtype='object')
解释:
In [79]: df1.isin(['Pass','Fail'])
Out[79]:
0 1 2
0 False True False
1 False True False
In [80]: df1.isin(['Pass','Fail']).all()
Out[80]:
0 False
1 True
2 False
dtype: bool
