我有一个由ID标识的对象的数据集,这些对象会在一段时间内移动每个ID:ID,移动的日期,移动的位置。我必须每月重新采样一次。可以使用以下代码完成此操作:
place
id date
0 2019-01 CH
2019-06 IT
2019-07 US
1 2017-03 US
2018-12 IT
2019-07 US
...
df.set_index('date',inplace=True)
df2 = df.groupby('id').resample('M').ffill()
结果如下:
place
id date
0 2019-01 0 CH
2019-02 0 CH
2019-03 0 CH
2019-04 0 CH
2019-05 0 CH
2019-06 0 IT
2019-07 0 US
1 2017-03 1 US
2017-04 1 US
2017-05 1 US
2017-06 1 US
2017-07 1 US
...
这几乎是我所需要的!如您所见,例外情况是,由于重新采样是按组完成的,因此每个ID的开始日期和结束日期都不相同,而我需要将缺少的月份添加到给定的日期中(例如,开始日期和结束日期年底)。任何线索如何实现这一目标?
对不起,如果重复的话。我见过很多类似的问题,但没有一个能具体回答这个变体。
答案 0 :(得分:1)
您可以使用
df.unstack().ffill(1).stack()