如何将“通过”和“失败”区分为大熊猫中的布尔?

时间:2017-02-18 23:59:58

标签: python pandas

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

但是,使用0 1 2 A Pass 3 B Fail 3 0 1 2 A qq Pass B nn Fail 函数,我可以得到仅布尔列(here)。

但是,我的列是'PASS'和'FAIL'而不是布尔值,我如何识别它们?

我得到的各种表格的例子:

Dataframe.all()

我希望我的函数在案例1中返回[1],在案例2中返回[2]。

谢谢!

编辑:git-checkout-tmp-worktree repo_path [revision] 根据评论不正确。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

像这样举例

>>> import pandas
>>> df = pandas.DataFrame( [ ("a","pass"), ("b","fail"), ("c","pass") ] )
>>> df
   0     1
0  a  pass
1  b  fail
2  c  pass
>>> df[1]
0    pass
1    fail
2    pass
Name: 1, dtype: object
>>> t = df[1]=="pass"
>>> t
0     True
1    False
2     True
Name: 1, dtype: bool
>>> t.all()
False
>>>