如何为.loc大熊猫动态添加条件

时间:2019-08-12 21:29:19

标签: python pandas dataframe

假设我有一个熊猫数据框df,我可以使用.loc(),如下所示:

c1 = df['count'] > 10
c2 = df['min'] > 3
c2 = df['max']> 4

filtered = df.loc[c1 & c2 & c3].T.reset_index()

不说条件存储在列表中:

conditions = [df['count'] > 10, df['min'] > 3, df['max']> 4]

如何将该列表传递给.loc()并指出必须满足所有条件(&)?

3 个答案:

答案 0 :(得分:2)

您可以使用functools reduce:

l = [c1,c2,c3]
from functools import reduce
df.loc[reduce(np.logical_and, l)]

@ GZ0改进...

df.loc[np.logical_and.reduce(l)]

答案 1 :(得分:2)

我认为np.logical_and.reduce应该有用

np.logical_and.reduce(conditions)

答案 2 :(得分:0)

除了您当前的方法外,同一任务的另一种替代方法是将条件存储为字符串,并使用df.query进行查询。

conditions = ["(count>10)", "(min>10)", "(max>4)"]
result = df.query(" & ".join(conditions))