使用熊猫填充在以下NaN中分配价值

时间:2020-10-01 02:16:04

标签: python pandas mean fill

我有一个收到的订单数据框,例如:

 Date        Units
01-01-2020  2
02-01-2020  12
03-01-2020  NaN
04-01-2020  NaN
05-01-2020  5
06-01-2020  9
07-01-2020  NaN
08-01-2020  1

有时候,客户会订购更多数量的商品,因此他们不必在接下来的1或2天重新订购。我正在尝试查找客户在任何给定日期使用的平均数量。例如,如果客户订购12个订单,然后在两天内没有订购,则所有三天的单位都应更改为4。 输出为:

 Date        Units
01-01-2020  2
02-01-2020  4
03-01-2020  4
04-01-2020  4
05-01-2020  5
06-01-2020  4.5
07-01-2020  4.5
08-01-2020  1

我可以结合使用填充和添加辅助列来计算连续的NaN值,但是我觉得必须有一种更优雅的方法。

1 个答案:

答案 0 :(得分:1)

我们可以尝试将isnullcumsum一起使用,创建groupby键,然后执行transform

df['Units'] = df['Units'].fillna(0).groupby(df['Units'].notnull().cumsum()).transform('mean')
0    2.0
1    4.0
2    4.0
3    4.0
4    5.0
5    4.5
6    4.5
7    1.0