我想计算最近 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 现在也必须考虑正确计算(或者我错了?)但这不起作用......我怎么能解决它?
添加回答
举报
0/150
提交
取消