无法查询Pandas0.14.0中的本地变量

2024-09-30 14:15:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以查询显式值:

fills.query('Symbol=="BUD US"')

现在我要查询一个变量:

In [40]: my_symbol
Out[40]: 'BUD US'

在pandas 0.13.1中,我可以简单地使用:

fills.query('Symbol==my_symbol')

熊猫0.14.0中不再允许这样做,因为local variables must be referred to explicitly。所以我试着

fills.query('Symbol==@my_symbol')

但这返回了一个错误

KeyError: '__pd_eval_local_my_symbol'

我可以改变我的其他一些代码使用显式局部变量,但这一个只是不会采取。有什么想法吗?如果有帮助的话,dtype是object


Tags: inpandasmylocalbevariablesoutsymbol
2条回答

似乎是0.14中的一个错误,特别是字符串(例如对int有效)。我在这里提交了一个问题:https://github.com/pydata/pandas/issues/7300
作为目前的解决方法,您可以将其包装在一个列表中:

In [40]: fills
Out[40]: 
    Price  Symbol
0  109.70  BUD US
1  109.72  BUD US
2  183.30  IBM US
3  183.35  IBM US

In [41]: my_symbol = ['BUD US']

In [42]: fills.query('Symbol==@my_symbol')
Out[42]: 
    Price  Symbol
0  109.70  BUD US
1  109.72  BUD US

上面的答案非常正确,但是我想提到我在这种情况下使用的另一种解决方法。基本上,只需像处理其他要插入变量的字符串一样处理查询字符串。

my_symbol = 'BUD US'
fills.query("Symbol=='{0}'".format(my_symbol))

编辑:根据您的评论修复

相关问题 更多 >

    热门问题