在熊猫中有条件地返回列

时间:2015-08-31 20:29:14

标签: python pandas

我已经阅读了很多关于在python中使用pandas索引的问题和答案,但我无法确定如何有条件地返回列。例如,请考虑以下事项:

import pandas as pd
df = pd.DataFrame([[0,1,1],[0,0,1],[0,0,0]], columns=['a','b','c'])
print(df)

   a  b  c
0  0  1  1
1  0  0  1
2  0  0  0

我如何让pandas给我列名,使得第零行的值和该列为1?预期输出:['b','c']

我如何让pandas给我列名,使得第0行和第1行的值为1?预期输出:['c']

我很高兴使用.loc查找特定条件为真的所有行,但这略有不同。

1 个答案:

答案 0 :(得分:0)

@PadraicCunningham在评论中提供了一个解决方案。它很简单:

df.columns[df.loc[0] == 1]

如果我只想选择满足两个(或更多条件)的列,可以在以下语句中列出:

df.columns[(df.loc[:1] == 1).all()]
df.columns[(df.loc[[0, 2]] == 1).all()]

前者返回除最后一行之外的所有行都取值1的列。后者返回第一行和第三行(标记为0和2)取值为1的列。我的错误是尝试使用{{1 }}