Pandas数据帧 - 如何将fillna与groupby一起用于时间序列

时间:2017-12-11 15:54:25

标签: python pandas pandas-groupby

编辑:
我有以下数据集:

日期,日,A,B,C
2015年/ 03/23日,莫,60085,105744,18623
2015年/ 03/24日,涂,41472,70327,14775
2015年/ 03/25日,我们,46644,81693,17168
2015年/ 03/26日,星期四,43640,74615,15577
2015/3月27日,星期五,37503,67754,13278
2015/03/28中,萨,,,
2015年/ 03/29日,苏,,,
2015/03/30中,钼,61904,108128,19600
2015/03/31中,涂,48376,80326,17512
2015年/ 04/01我们,48529,17815
2015/12/03,钍,45491,74744,15524
2015年/ 04/03,星期五,,,
2015/04/04,萨,,,
2015年/ 04/05,苏,,,
2015年/ 04/06,莫,,,
2015年/ 04/07,涂,65738,120412,19082
2015/04/08,我们,44792,81468,16796
2015/04/09,钍,40930,70810,13664
2015/04 / 10,Fr,39367,60249,11882

我想用Mon-Fr中的所有NA填充:
1)前几周的价值
2)上一个和下一个的平均值

所以在2015/04/01我希望:
1)81693
2)(81693 + 81468)/2=81580.5

我认为我可以使用groupby和fillna使用ffill,但我不确定这是否可行或者是否是最佳方式。

1 个答案:

答案 0 :(得分:0)

我假设没有任何日期丢失。

df['date'] = df['date].map(lambda x:datetime.strptime(x,"%d/%m/%Y"))
df.sort_values(by=['date'],inplace=True)
cols = ['v1','v2','v3','v4']
cols_last_week = [i+'_last_week' for i in cols]
df[cols_last_week] = df[cols].shiftby(7)

假设v1有空值

df.loc[df['v1'].isnull(),'v1'] = df.loc[df['v1'].isnull(),'v1_last_week']