Python 熊猫数据帧评估功能错误
我尝试使用pandas eval函数执行以下操作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
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