我正在研究pandas DataFrame eval方法(docs),我发现这是一个很好的语法糖,也可以帮助enhancing performances。在
以下是文档中的示例:
from numpy.random import randn
import pandas as pd
df = pd.DataFrame(randn(10, 2), columns=list('ab'))
df.eval('a + b')
当列名中有空格时,如何使用eval
?
示例:
我试过了:
df.eval('"Col 1" + "Col 2"')
但这会产生错误:
TypeError: data type "Col 1" not understood
这使eval的参数保持为字符串,但不如在列名中没有空格的示例干净
示例:
^{pr2}$编辑
经过一番调查,如果您使用的是python引擎,那么上面的方法在python 2.7或3.6中都能正常工作:
但是,这并没有给您提供
numexpr
引擎所能提供的性能优势。在Python2.7中,此方法有效:但是在Python3.6中,您会得到错误
ValueError: unknown type str160
。在我的猜测是,这是因为pandas在3.6中将unicode字符串传递给
numexpr
,而在2.7中传递的是bytestring。我猜这个问题与this issue有关,可能也与{a2}有关。在谢谢@Thundzz
这个片段效果很好!在
您可以使用:
但这有点违背eval函数的目的。在
或者,也可以重命名列,使其与eval语法兼容:
^{pr2}$相关问题 更多 >
编程相关推荐