python - 值错误: unknown type object pandas eval for n rows => 100

标签 python pandas numpy eval

我有以下代码:

import numpy as np
import pandas as pd

length = 100

test = pd.DataFrame({
    "number1": np.random.randint(1,11,size=length),
    "sign1": np.random.choice(['*', '/'], length),
    "number2": np.random.randint(1,11,size=length),
    "sign2": np.random.choice(['+', '-'], length),
    "number3": np.random.randint(1,101,size=length),
    "random": np.random.randint(1,101,size=length),
})

test["result"] = pd.eval(test["number1"].astype(str)+test["sign1"]+test["number2"].astype(str)+\
                         test["sign2"]+test["number3"].astype(str))

我生成一些随机方程,然后求解它们。如果 length 小于 101,则一切正常。如果我将其设置为更多,我会得到:

ValueError                                Traceback (most recent call last)
<ipython-input-87-5a65a900fe72> in <module>
     14 })
     15 
---> 16 test["result"] = pd.eval(test["number1"].astype(str)+test["sign1"]+test["number2"].astype(str)+\
     17                          test["sign2"]+test["number3"].astype(str))
~/anaconda3/lib/python3.8/site-packages/pandas/core/computation/eval.py in eval(expr, parser, engine, truediv, local_dict, global_dict, resolvers, level, target, inplace)
    344         eng = _engines[engine]
    345         eng_inst = eng(parsed_expr)
--> 346         ret = eng_inst.evaluate()
    347 
    348         if parsed_expr.assigner is None:
.
.
.

ValueError: unknown type object
为什么?怎么了?我该如何解决这个问题?

最佳答案

bug ,需要通过 applymap 分别处理每个值:

test["result"] = (test["number1"].astype(str)+test["sign1"]+test["number2"].astype(str)+\
                         test["sign2"]+test["number3"].astype(str)).apply(pd.eval)

test["result"] = (test["number1"].astype(str)+test["sign1"]+test["number2"].astype(str)+\
                         test["sign2"]+test["number3"].astype(str)).map(pd.eval)

关于python - 值错误: unknown type object pandas eval for n rows => 100,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64801287/

相关文章:

python - 如何创建满足特定条件的动态更新类实例列表? (Python)

python - Python 表达式中的神秘逗号

python - 50% 处的 CDF x 值和平均值不显示相同的数字

python - Pandas DataFrame 聚合列,其他列的名称作为值

python - 2D 和 3D 数组之间的点积

python - Django 表格 : reasons to use them?

python - 使用 python、HTTP/1.1 和自定义用户代理发布表单数据

python - 使用 Dask DataFrame 和 Pandas 高效读取 Timeseries CSV 数据目录

python - 矩阵的 Frobenius 距离矩阵

python - 以不同的方式二值化python中的稀疏矩阵