我正在处理df,并希望通过过滤一行的值来选择满足条件的列。
我只知道一种愚蠢的方法:循环查询一个单元格值,然后得到我的期望 列。
>>> df = pd.DataFrame({'A':list('abcd'),'B':list('1bfe'),'C':list('ghgk')})
>>> df
A B C
0 a 1 g
1 b b h
2 c f g
3 d e k
>>> #get columns ,condition: second row equal 'b'
...
>>> cols = list()
>>> for val in df:
... if df.loc[1,val] == 'b':
... cols.append(val)
...
>>> cols
['A', 'B']
答案 0 :(得分:1)
使用
df.columns[df.loc[1]=='b']
答案 1 :(得分:0)
有一种在熊猫数据框中进行查询的好方法。
df = pd.DataFrame({'A':list('abcd'),'B':list('1bfe'),'C':list('ghgk')})
df.query("A == 'a' and B == '1'")
此查询将基于列A
与a
匹配且列B
与1
匹配的事实返回数据帧的第一行
答案 2 :(得分:0)
在电话上无法测试,但可以运行:
df.columns[df.loc[1].eq('b')]