Python 熊猫数据帧评估功能错误

Python 熊猫数据帧评估功能错误,python,pandas,eval,Python,Pandas,Eval,我尝试使用pandas eval函数执行以下操作 df.eval('I = (G * H) / 10000', inplace=True) 但它返回了以下错误 TypeError: unsupported operand type(s) for /: 'object' and '<class 'int'>' 一切都很顺利。 有没有办法解决这个问题??我想使用eval函数计算更复杂的表达式 检查列dtype,并可能转换为数字列 import pandas as pd colum

我尝试使用pandas eval函数执行以下操作

df.eval('I = (G * H) / 10000', inplace=True)
但它返回了以下错误

TypeError: unsupported operand type(s) for /: 'object' and '<class 'int'>'
一切都很顺利。 有没有办法解决这个问题??我想使用eval函数计算更复杂的表达式

检查列
dtype
,并可能转换为数字列

import pandas as pd


columns = ['A', 'B', 'C']
my_df = pd.DataFrame(columns=columns)
my_df.loc[len(my_df)] = [2, 4, 5]
print(my_df.dtypes)

>>> A    object
>>> B    object
>>> C    object
>>> dtype: object

# Convert from object to int.
my_df[columns] = my_df[columns].astype(int)

my_df.eval('I = (A * B) / 10000', inplace=True)
print(my_df)
>>>    A  B  C       I
>>> 0  2  4  5  0.0008

你确定
G*H
是一个完全数字的列吗?是的,如果你在
eval
函数之前使用df['G']=pd.to_numeric(df['G'])和“H”相同,那么它们完全是数字列,你还会得到同样的错误吗?
TypeError: unsupported operand type(s) for /: 'object' and '<class
'int'>'
my_df.eval('I = (A * B)', inplace=True)
print(my_df.I)
>>> 0    8
>>> Name: I, dtype: object
import pandas as pd


columns = ['A', 'B', 'C']
my_df = pd.DataFrame(columns=columns)
my_df.loc[len(my_df)] = [2, 4, 5]
print(my_df.dtypes)

>>> A    object
>>> B    object
>>> C    object
>>> dtype: object

# Convert from object to int.
my_df[columns] = my_df[columns].astype(int)

my_df.eval('I = (A * B) / 10000', inplace=True)
print(my_df)
>>>    A  B  C       I
>>> 0  2  4  5  0.0008