为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas:过去 k 天的平均值

Pandas:过去 k 天的平均值

婷婷同学_ 2021-07-15 22:11:24
我想计算最近 k 次出现的 (FLIGHT_DURATION) 的滚动平均值。就 FLIGHT_DATE 给出的顺序而言,last 表示 last。就像我在以下示例中所做的那样:ARRIVAL_AIRPORT ARRIVAL_RUNWAY  DEPARTURE_AIRPORT DEPARTURE_RUNWAYFLIGHT_DATE FLIGHT_DURATION FLIGHT_NUMBER0   FRA YYY HAM XXX 2000-01-01  11  11   FRA YYY HAM XXX 2000-01-02  12  12   FRA YYY HAM XXX 2000-01-03  13  13   FRA YYY HAM XXX 2000-01-04  14  14   FRA YYY HAM XXX 2000-01-05  15  1期望 k = 3:解决方案:ExampleA = ExampleA.groupby('FLIGHT_NUMBER').apply(lambda x: x.set_index('FLIGHT_DATE').resample('1D').first())df1 = ExampleA.groupby(level=0)['FLIGHT_DURATION'].apply(lambda x: x.shift().rolling(min_periods=3,window=3).mean()).reset_index(name='Value_Average_Past_2_days')pd.merge(ExampleA, df1, on=['FLIGHT_NUMBER', 'FLIGHT_DATE'], how='left')输出:FLIGHT_DATE ARRIVAL_AIRPORT ARRIVAL_RUNWAY  DEPARTURE_AIRPORT   DEPARTURE_RUNWAY    FLIGHT_DURATION FLIGHT_NUMBER    Value_Average_Past_3_days0   2000-01-01  FRA YYY HAM XXX 11  1   NaN1   2000-01-02  FRA YYY HAM XXX 12  1   NaN2   2000-01-03  FRA YYY HAM XXX 13  1   NaN3   2000-01-04  FRA YYY HAM XXX 14  1   12.04   2000-01-05  FRA YYY HAM XXX 15  1   13.0如您所见,我添加了一个显示平均值的新列。至少需要3天。问题:现在我有一个更复杂的数据框:FLIGHT_NUMBER FLIGHT_DATE DEPARTURE_AIRPORT ARRIVAL_AIRPORT DEPARTURE_RUNWAY ARRIVAL_RUNWAY FLIGHT_DURATION 1 01.01.2000,HAM,FRA,XXX,YYY,11   -- NaN 1 02.01.2000,HAM,FRA,XXX,YYY,12   -- NaN 1 03.01.2000,HAM,FRA,XXX,YYY,13   -- NaN 1 04.01.2000,HAM,FRA,XXX,ZZZ,101  -- NaN 1 05.01.2000,HAM,FRA,XXX,YYY,14   -- 12 1 06.01.2000,HAM,FRA,XXX,ZZZ,102  -- NaN在值之前带有 - 的列是我期望的平均值。如您所见,这个例子有点复杂。仅对 FLIGHT_DATE 进行分组是不够的。必须有其他清晰可辨的列。ARRIVAL_RUNWAY、DEPARTURE_RUNWAY、DEPARTURE_AIRPORT 和 ARRIVAL_AIRPORT 现在也必须考虑正确计算(或者我错了?)但这不起作用......我怎么能解决它?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 231 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号