我已经阅读了很多关于在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
查找特定条件为真的所有行,但这略有不同。
答案 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 }}