根据Pandas数据帧中的特定值过滤所有行

时间:2016-07-11 16:17:51

标签: pandas dataframe

我的数据框有"是"满足条件时,"否"什么时候不是。现在,我想检索所有包含" No"在它。

我尝试使用此代码:

 df2 = df[df['Logs'].astype(str).str.contains('No')] 
 df3 = df[df['Jobs'].astype(str).str.contains('No')] 
 df4 = df[df['Performance'].astype(str).str.contains('No')] 
 df5 = df2 | df3 | df4

我收到错误"不支持的操作数类型"。

例如:

 MachineName    Logs   Jobs   Performance
 121            Yes    No      Yes
 122            Yes    Yes     Yes
 123            Yes    No      No
 125            Yes    Yes     Yes
 126            No     No      No

输出:

 MachineName    Logs   Jobs   Performance
 121            Yes    No      Yes
 123            Yes    No      No
 126            No     No      No

1 个答案:

答案 0 :(得分:2)

对要成为'No'的所有列执行相等检查,然后使用any获取布尔数组。

condition = (df[['Logs', 'Jobs', 'Performance']] == 'No').any(axis=1)
df2 = df[condition]

结果输出符合预期:

   MachineName Logs Jobs Performance
0          121  Yes   No         Yes
2          123  Yes   No          No
4          126   No   No          No