pd.eval('df["Col 1"] + df["Col 2"]')
这使参数EVAL作为一个字符串,但比没有空格的例子不干净:
或者,也可以以使它们与EVAL语法兼容重命名列在列名
例如:
print(df)
Col 1 Col 2
0 -0.206838 -1.007173
1 -0.762453 1.178220
2 -0.431943 -0.804775
3 0.830659 -0.244472
4 0.111637 0.943254
5 0.206615 0.436250
6 -0.568307 -0.680140
7 -0.127645 -0.098351
8 0.185413 -1.224999
9 0.767931 1.512654
print(pd.eval('df["Col 1"] + df["Col 2"]'))
0 -1.214011
1 0.415768
2 -1.236718
3 0.586188
4 1.054891
5 0.642865
6 -1.248447
7 -0.225995
8 -1.039586
9 2.280585
dtype: float64
编辑
经过一番调查后,它看起来像上面的方法在任何蟒蛇2.7或3.6的工作,如果你正在使用Python引擎:
pd.eval('df["Col 1"] + df["Col 2"]', engine='python')
然而,这并不会给你的性能优势发动机可以提供numexpr
。在Python 2.7版,这个方法的工作原理:
pd.eval('df["Col 1"] + df["Col 2"]', engine='numexpr')
但是在Python 3.6你的错误ValueError: unknown type str160
。
我的猜测是,这是因为熊猫传递一个unicode字符串到3.6中的numexpr
,而2.7中的字节串。我猜这个问题与this issue和this one有关。
由于它不是一种内置方法,所以* DataFrame *需要按照Python规则进行限定。你可能意思是'pd.DateFrame'或'从pandas导入DataFrame'? – Parfait