如何从给定的过滤器集正确地在pandas中应用过滤器?



我在使用熊猫滤镜时遇到了麻烦。问题是这样的。集合(filter_names)中的第一个变量应该对应于集合(filter_values)中的第一个变量。第二个变量的值应该大于或等于给定的值。换句话说,在这样的输入中:

df = pd.DataFrame({'animal': ['cat', 'cat', 'snake', 'dog', 'dog', 'cat', 'snake', 'cat', 'dog', 'dog'],
'age': [2.5, 3, 0.5, np.nan, 5, 2, 4.5, np.nan, 7, 3],
'name': ['Murzik', 'Pushok', 'Kaa', 'Bobik', 'Strelka', 'Vaska', 'Kaa2', 'Murka', 'Graf', 'Muhtar'],
'visits': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
'priority': ['yes', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'no']},
index = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'])
filter_names = ["animal", "age"]
filter_values = ["cat", 3]

在查询中的条件是这样的:"cat"= ="animal","age" & lt; 3 .

它应该提供下面的DF:


animal  age    name  visits priority
a    cat  2.5  Murzik       1      yes
f    cat  2.0   Vaska       3       no
我写了以下代码来实现这个效果:
df_filtered = df[(filter_names[0]==filter_values[0])&(df[filter_names[1]]>=filter_values[1])]

无效。我好像错过了什么?

我认为你在第一种情况下丢失了df[...],而在第二种情况下使用了错误的符号:

df[(df[filter_names[0]] == filter_values[0]) & (df[filter_names[1]] < filter_values[1])]

它将像这样工作:

In [2]: df[(df[filter_names[0]] == filter_values[0]) & (df[filter_names[1]] < filter_values[1])]
Out[2]: 
animal  age    name  visits priority
a    cat  2.5  Murzik       1      yes
f    cat  2.0   Vaska       3       no

相关内容

  • 没有找到相关文章

最新更新