ValueError: unknown type object pandas eval for n rows => 100

ValueError: unknown type object pandas eval for n rows => 100

我有以下代码:

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)