我想做平均值插补汽车价格和平均价格应该基于汽车型号,所以我试图使一个分组函数为我的数据基于汽车型号列的平均值插补,但我得到这个错误:
TypeError:“DataFrameGroupBy”对象不支持项分配
我试过这个
grouped_df = df1.groupby('modele')
def replace_zero_or_1000_with_nan(x):
x[x == 0.0] = pd.np.nan
x[x == 1000000.0] = pd.np.nan
return x
# Use apply() to apply the function to the car_price column of each group
grouped_df['prix_millions'] = grouped_df['prix_millions'].apply(replace_zero_or_1000_with_nan)
# Use transform() to apply the mean value of each car model to the NaN values
imputed_df = grouped_df.transform(lambda x: x.fillna(x.mean()))
我需要使0和10000空值的值,然后将它们替换为基于汽车模型的平均插补,这样这些值就可以是逻辑的。
3条答案
按热度按时间kupeojn61#
您可以使用布尔索引将值0和1000替换为组的平均值:
输出:
详情:
输入:
k10s72fa2#
您收到的错误消息“TypeError:“DataFrameGroupBy”对象不支持项分配,因为您试图将值分配给groupby对象,而这是不允许的。
若要解决此问题,在将replace_zero_or_1000_with_nan函数应用于'prix_millions'列时,可以使用transform方法而不是apply。transform方法将一个函数应用于每个组,并返回与原始数据框形状相同的数据框。
下面是更新后的代码:
这应该允许您用NaN替换0和10000值,然后将每个汽车模型的平均值代入NaN值。
qnyhuwrf3#
这是因为groupby方法返回DataFrameGroupBy类型,而不是DataFrame。事实上,在替换值之前,你真的需要groupby数据集吗?我认为你可以通过重新排序操作来解决这个问题。