【发布时间】:2017-06-07 10:29:13
【问题描述】:
我有三个变量
a='col1'
b='=='
c=2
我有 Pandas 数据框
df = pd.DataFrame({'col1': [0, 1, 2], 'col2': [10, 11, 12]},dtype=object)
我想过滤col1=2,所以我写了
df.query("@a @b @c")
这是抛出错误
File "<unknown>", line 1
__pd_eval_local_a __pd_eval_local_b __pd_eval_local_c
^
SyntaxError: invalid syntax
有人可以帮助我如何使用这三个变量来实现这一目标吗?
谢谢,
【问题讨论】:
-
你可以这样做
df.query(a + b + c) -
是的,知道了。但是当我将 c 转换为字符串变量时,它正在工作!过滤时这种转换是否会成为问题?请帮忙!
-
我不使用
query所以我不知道评估规则但是如果你只是想构造一个查询字符串,那么在这里连接所有字符串以创建一个字符串会更容易,即使您想使用的东西确实有效,我认为它会失败,因为@c将进行查询'col1' == '2',它将过滤字符串'2'而不是数字2 -
对不起,我不明白,请用一个完整的例子编辑你的问题,还有你在这里真正想达到的目标是我们的建议没有达到的目标
-
@jezrael,
a+b+str(c)不适用于字符串。示例:c=='aaa'; a+b+str(c) == 'col1==aaa'。并且aaa没有被引用,因此它将被视为列名...
标签: python pandas operator-keyword