Python 在pandas中使用ffill在以下NAN中分配值

Python 在pandas中使用ffill在以下NAN中分配值,python,pandas,mean,fill,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台,但2天内未订购,则所有3天的单位都应更改为4台。

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

 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台,但2天内未订购,则所有3天的单位都应更改为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

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

我们可以尝试使用
isnull
cumsum
创建
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