[英]Selecting dataframe by comparing multiple columns in pandas
我有一个 Pandas 数据框,想选择某些列具有特定值的行。 例如,对于一列我试过这个:
df = pd.DataFrame({
'subA': [54,98,70,91,38],
'subB': [25,26,30,93,30],
'subC': [43,89,56,50,48]})
a = df[df['subA'] == 70]
print(a)
输出如下:
subA subB subC
2 70 30 56
这是意料之中的,也是完全可以理解的。 现在我想选择前两列具有特定值的行。 例如,我将代码更改如下:
df = pd.DataFrame({
'subA': [54,98,70,91,38],
'subB': [25,26,30,93,30],
'subC': [43,89,56,50,48]})
my_sub = ['subA', 'subB']
my_marks = [54, 25]
a = df[df[my_sub] == my_marks]
print(a)
我期待看到这样的结果:
subA subB subC
1 54 25 43
但相反,输出充满了 NaN 值,我不清楚:
subA subB subC
0 54.0 25.0 NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
我在这里缺少什么以获得所需的输出? 我也试过 .loc 和 iloc 但这些都没有帮助。
尝试 :
df.loc[df.filter(my_sub).isin(my_marks).all(1)]
第一步是只选择感兴趣的列,使用isin
函数获取布尔值。 all
函数仅获取完全为 True 的行,然后您可以索引原始数据帧以获得结果
subA subB subC
0 54 25 43
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.