我有两个数据帧.第一个值为grouper
,包含每个项目的每月平均销售量.大多数商品都有12个月的价格,因为它们的售价为1年.但打折一年的商品并不是所有月份都有价值.例如:grouper[grouper['Product'] == 'IT984359570']
Product Month Sales Quantity [QTY]
4190 IT984359570 4 35.0
4191 IT984359570 5 208.0
4192 IT984359570 6 208.0
4193 IT984359570 7 233.0
4194 IT984359570 8 191.0
第二个数据帧是一个数据透视表,它显示按产品分类的累计销售额pivot_table
.这还考虑了新订单(因此某些单元格中的金额为正).pivot_table[pivot_table['Product'] == 'IT984359570']
退货:
Date Product 2022-05-01 2022-06-01 2022-07-01 2022-08-01 2022-09-01 2022-10-01 2022-11-01
412 IT984359570 -208.0 -416.0 -649.0 -840.0 2019.0 NaN NaN
我希望避免删除所有具有NaN值的行.我想用从grouper
开始的特定产品的所有条目的平均值填充所有NaN值.对于产品IT984359570
:将第412行的所有NA值填入175,如(35+208+208+233+191)/5=175.
我已经try 过用代码来做到这一点
pivot_table = pivot_table.fillna(lambda row: grouper.loc[grouper['Product'] == row['Product'], 'Sales Quantity [QTY]'].mean())
然而,我没有得到想要的输出.我的输出:
Date Product 2022-05-01 2022-06-01 2022-07-01 2022-08-01 2022-09-01 2022-10-01 2022-11-01
412 IT984359570 -208.0 -416.0 -649.0 -840.0 2019.0 <function <lambda> at 0x0000023221232320> <function <lambda> at 0x0000023221232320>
我做错了什么?
编辑:
pivot_table
使用.umsum(),因此所需输出如下所示:
Date Product 2022-05-01 2022-06-01 2022-07-01 2022-08-01 2022-09-01 2022-10-01 2022-11-01
412 IT984359570 -208.0 -416.0 -649.0 -840.0 2019.0 1844.0 1669.0