首页 > 解决方案 > 在 DataFrame 的多列上评估相同的逻辑条件

问题描述

我有一个包含多个测量值(时间序列)的熊猫数据框。在这些测量中,一些来自类似的设备(在这种情况下,6 个泵)这是我的数据样本:

pd.DataFrame(data = {'pump1': [20,20],'pump2': [21,30],'pump3': [24,38],'pump4': [23,30],'pump5': [22,30],'pump6': [2,36], 'current':[10,200], 'flow': [50,50]})
    pump1  pump2  pump3  pump4  pump5  pump6  current  flow
0      20     21     24     23     22      2       10    50
1      20     30     38     30     30     36      200    50

我正在尝试评估所有 6 个泵是否都符合相同的标准。即行上每个泵的值是否小于 25。这种情况下,第 0 行将返回True,第 1 行将返回False

我可以写:

df["idle"] = (df["pump1"]<25) & (df["pump2"]<25) & (df["pump3"]<25) & (df["pump4"]<25) & (df["pump5"]<25) & (df["pump6"]<25)

但是实在是太难看了!有没有更好的方法来写这个?

我以为我可以使用类似的东西.all()并且<25只写一次条件......但我不知道从哪里开始!

标签: python-3.xpandas

解决方案


filter与 一起使用all

df["result"] = (df.filter(like="pump",axis=1)<25).all(1)

print (df)

   pump1  pump2  pump3  pump4  pump5  pump6  current  flow  result
0     20     21     24     23     22      2       10    50    True
1     20     30     38     30     30     36      200    50   False

推荐阅读