我的数据看起来像这样:
ID1 ID2 Date Values
1 1 2018-01-05 75
1 1 2018-01-06 83
1 1 2018-01-07 17
1 1 2018-01-08 15
1 2 2018-02-01 85
1 2 2018-02-02 98
2 1 2018-02-15 54
2 1 2018-02-16 17
2 1 2018-02-17 83
2 1 2018-02-18 94
2 2 2017-12-18 16
2 2 2017-12-19 84
2 2 2017-12-20 47
2 2 2017-12-21 28
2 2 2017-12-22 38
所有操作必须在['ID1', 'ID2']
。组内完成
我想要做的是以一种方式对数据帧进行上采样,以便最终得到每个'Date'
索引的子数据帧,其中包括所有以前的日期,包括来自它的当前日期{{1} }组。生成的数据框应如下所示:
['ID1', 'ID2']
我正在使用的数据帧非常大(约2000万行),因此我希望避免遍历每一行。
是否可以使用函数或pandas函数组合(如resample / apply / reindex)来实现我的需求?
答案 0 :(得分:0)
假设ID1和ID2是您的原始索引。您应该重置索引,将Date设置为Index,将索引重置为[ID1,ID2]:
df = df.reset_index().set_index(['Date']).resample('d').ffill().reset_index().set_index(['ID1','ID2'])
如果您的'日期'字段是字符串,那么您应该在重新采样该字段之前将其转换为日期时间。您可以使用以下内容:
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')