【发布时间】:2018-11-16 10:55:28
【问题描述】:
我刚刚阅读并为我的Pandas 相关需求对these newly found optimization functions 感到兴奋而流口水。根据这本书:
DataFrame.eval() 方法允许使用列对表达式进行更简洁的评估:
result3 = df.eval('(A + B) / (C - 1)')
np.allclose(result1, result3)
是的
以我为例:
我的数据框包含大约 42000 条记录和 28 列。其中两个是Date 和Heure,它们是字符串。
我的目标:将两列合并为一列。我可以用这段代码轻松完成:df_exade_light["Date"]+df_exade_light["Heure"],在其上应用%timeit 返回
每个循环 6.07 ms ± 219 µs(平均值 ± 标准偏差,7 次运行,每次 100 个循环)
但由于某种原因,df.eval('Date + Heure') 返回一个:
RecursionError: 超出最大递归深度
更重要的是,我应用了this thread 中的解决方案来提高允许的堆栈深度,但内核只是崩溃了。
这是什么原因?我做错了吗?
这个问题可以用这段代码重现:
import pandas as pd
df = pd.DataFrame({'A': ['X','Y'],
'B': ['U','V']})
df.eval('A+B')
【问题讨论】:
标签: python python-3.x pandas eval numexpr