Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我想使用fillna Mean来填充缺少的值。我想根据产品Id来做_Python_Pandas - Fatal编程技术网

Python 我想使用fillna Mean来填充缺少的值。我想根据产品Id来做

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

我想根据产品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           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-请不要将我的答案添加到您的解决方案中。我使用了这段代码执行代码需要时间,但它什么也没做