使用 pandas 中的 ffill 在以下 NaN 之间分配值

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


 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 天没有订购,则所有三天的单位都应更改为 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 值,但我觉得必须有一种更优雅的方法。


繁华开满天机
浏览 86回答 1
1回答

慕运维8079593

我们可以尝试使用isnullcreate cumsumkeygroupby然后执行transformdf['Units'] = df['Units'].fillna(0).groupby(df['Units'].notnull().cumsum()).transform('mean')0    2.01    4.02    4.03    4.04    5.05    4.56    4.57    1.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python