python - 熊猫数据框评估功能错误
问题描述
我尝试使用 pandas eval 函数进行以下操作
df.eval('I = (G * H) / 10000', inplace=True)
但它给我返回了以下错误
TypeError: unsupported operand type(s) for /: 'object' and '<class 'int'>'
但是当我只是这样做时,
df.eval('I = G * H', inplace=True)
一切正常。关于如何解决这个问题的任何想法?我想使用 eval 函数评估更复杂的表达式。
解决方案
TypeError: unsupported operand type(s) for /: 'object' and '<class 'int'>'
建议即使它与(假定的)数字数据一起使用,它也会(G * H)
返回一个dtype。object
my_df.eval('I = (A * B)', inplace=True)
print(my_df.I)
>>> 0 8
>>> Name: I, dtype: object
检查您的列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
推荐阅读
- json - 在 json 中获取数组长度,Nifi
- sql - 查询以获取圈子 postgres 内的所有功能
- cypress - 我收到 cypress 错误“TypeError 无法读取未定义的属性‘数据’”
- opencv - 对 AKAZE 参数有什么解释吗?
- python - 带有用户输入和自定义按钮的 Tkinter 对话框
- php - 如何使用事件侦听器向用户显示警报消息
- r - 如何在 r 中使用列表元素作为绘图标题?
- c++ - c++中二维数组的两条对角线之和的绝对差
- python - AttributeError:模块 'torch' 没有 PyTorch 的属性 'rfft'
- typescript - Array.fill() 然后更改二维数组中的值会为 JS 中的列提供相同的输出