Skip to main content
 首页 » 编程设计

python之如何区分 'PASS' 和 'FAIL' 作为 pandas 中的 bool 值

2025年05月04日23leader

在我的数据集中,我的列名是可变的,所以我不知道它的名字,也不知道它出现的顺序。 (并非没有选择)

但是,使用 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