Python 我想使用fillna Mean来填充缺少的值。我想根据产品Id来做
我想根据产品id填写产品价格列和产品销售列的nan值创建数据Python 我想使用fillna Mean来填充缺少的值。我想根据产品Id来做,python,pandas,Python,Pandas,我想根据产品id填写产品价格列和产品销售列的nan值创建数据 product_ID Prodcut_Price Product_monthly_sale 1 24 2000.00 1 Nan 2500.00 1 26 Nan 1 28 2700.00 2
product_ID Prodcut_Price Product_monthly_sale
1 24 2000.00
1 Nan 2500.00
1 26 Nan
1 28 2700.00
2 25 2400.00
2 Nan Nan
2 27 2600.00
结果:
df = pd.DataFrame({'product_ID':[1,1,3,3,3],
'Prodcut_Price':[1,np.nan,5,np.nan, 9],
'Product_monthly_sale':[1,np.nan,5,np.nan, 5]})
df
df = df[['product_ID']].join(df.groupby("product_ID")
.transform(lambda x: x.fillna(x.mean())))
df
用分组平均值填充nan
product_ID Prodcut_Price Product_monthly_sale
0 1 1.0 1.0
1 1 NaN NaN
2 3 5.0 5.0
3 3 NaN NaN
4 3 9.0 5.0
结果:
df = pd.DataFrame({'product_ID':[1,1,3,3,3],
'Prodcut_Price':[1,np.nan,5,np.nan, 9],
'Product_monthly_sale':[1,np.nan,5,np.nan, 5]})
df
df = df[['product_ID']].join(df.groupby("product_ID")
.transform(lambda x: x.fillna(x.mean())))
df
为提高性能,请避免使用lambda函数,而应使用以下各项作为每组平均数:
提供您的预期输出。另外,请说明您可能首先尝试了什么,您可以执行
df.groupby('product_id').mean()
,并将其临时存储。然后在数据帧上迭代,当遇到Nan时,从临时数据帧中获取值。我希望Nan值用Fillna(中值或平均值)替换,但基于乘积_id,到底是什么问题?你试过什么,做过什么研究吗?堆栈溢出不是免费的代码编写服务。请参阅:,。另外,这怎么不是您之前问题的重复:为什么不编辑该问题?我想对形状的数据集(30000600)进行编辑。这不能手动完成。您可以使用for循环来完成。请参阅编辑后的答案您能解释一下它基本上在做什么吗?@JonathandeMelker-我认为代码的瓶颈是调用lambda函数。@JonathandeMelker-请不要将我的答案添加到您的解决方案中。我使用了这段代码执行代码需要时间,但它什么也没做