gpt4 book ai didi

python - Pandas:使用带有字符串变量的 df.eval 作为条件过滤

转载 作者:行者123 更新时间:2023-12-05 04:29:48 24 4
gpt4 key购买 nike

我有一个模拟数据框,其中一列是用以下方法创建的:

df = pd.DataFrame({'A': np.arange(1,201)})

这只是一个数据框,其中包含数字 1 到 200,有一列“A”。我想根据像

这样的条件语句来过滤数据框
df[df["A"] > 20]

但是列名、 bool 值 > 和值 20 必须作为字符串变量传入。所以,我相信 pandas 中的 dataframe.eval 函数应该用于此。为此,我创建了一个名为 select_twenty 的函数。这是它:

def select_twenty(input_df, column_name, boolean_arg, value):
evaluated = input_df.eval(input_df[input_df[column_name] + boolean_arg + value])
return evaluated

在上面的函数中,input_df 是上面模拟的数据帧,column_name 是所选列的名称,boolean_arg 是 bool 值,>,而 value 是值 20。最后三个参数在函数中作为字符串传入调用:

select_twenty(df, "A", ">", "20")

当我调用该函数时,它一直给我一个 UFuncTypeError。我已经在谷歌上搜索过,但不知道如何解决。我还没有看到一个例子,其中 pandas 中的 eval 是以这种方式完成的。那么,请问有人可以帮我处理过滤器吗?谢谢

最佳答案

该错误与 eval 参数中的 + 相关,因为您正尝试使用 boolean_arg 添加 DataFrame 列值。您正在寻找的是:

def select_twenty(input_df, column_name, boolean_arg, value):
evaluated = input_df[input_df.eval(column_name + boolean_arg + value)]
return evaluated
print(select_twenty(df, "A", ">", "20"))
       A
20 21
21 22
22 23
23 24
24 25
.. ...
195 196
196 197
197 198
198 199
199 200

[180 rows x 1 columns]

关于python - Pandas:使用带有字符串变量的 df.eval 作为条件过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72211181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com