向上采样每个dateindex行,包括组中以前的日期

2024-10-03 17:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据如下所示:

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'索引就有一个子数据帧,其中包括所有以前的日期,包括它自己的['ID1', 'ID2']组中的当前日期。生成的数据帧应如下所示:

ID1  ID2 DateGroup   Date           Values 
1    1   2018-01-05  2018-01-05     75
1    1   2018-01-06  2018-01-05     75
1    1   2018-01-06  2018-01-06     83
1    1   2018-01-07  2018-01-05     75
1    1   2018-01-07  2018-01-06     83
1    1   2018-01-07  2018-01-07     17
1    1   2018-01-08  2018-01-05     75
1    1   2018-01-08  2018-01-06     83
1    1   2018-01-08  2018-01-07     17
1    1   2018-01-08  2018-01-08     15
1    2   2018-02-01  2018-02-01     85
1    2   2018-02-02  2018-02-01     85
1    2   2018-02-02  2018-02-02     98
2    1   2018-02-15  2018-02-15     54
2    1   2018-02-16  2018-02-15     54
2    1   2018-02-16  2018-02-16     17
2    1   2018-02-17  2018-02-15     54
2    1   2018-02-17  2018-02-16     17
2    1   2018-02-17  2018-02-17     83
2    1   2018-02-18  2018-02-15     54
2    1   2018-02-18  2018-02-16     17
2    1   2018-02-18  2018-02-17     83
2    1   2018-02-18  2018-02-18     94
2    2   2017-12-18  2017-12-18     16
2    2   2017-12-19  2017-12-18     16
2    2   2017-12-19  2017-12-19     84
2    2   2017-12-20  2017-12-18     16
2    2   2017-12-20  2017-12-19     84
2    2   2017-12-20  2017-12-20     47
2    2   2017-12-21  2017-12-18     16
2    2   2017-12-21  2017-12-19     84
2    2   2017-12-21  2017-12-20     47
2    2   2017-12-21  2017-12-21     28
2    2   2017-12-22  2017-12-18     16
2    2   2017-12-22  2017-12-19     84
2    2   2017-12-22  2017-12-20     47
2    2   2017-12-22  2017-12-21     28
2    2   2017-12-22  2017-12-22     38

我使用的数据帧非常大(约2000万行),因此我希望避免遍历每一行。你知道吗

是否可以使用函数或函数的组合(如重采样/应用/重新索引)来实现我需要的功能?你知道吗


Tags: 数据函数功能datevaluesid2id1组内
1条回答
网友
1楼 · 发布于 2024-10-03 17:21:05

假设ID1和ID2是您的原始索引。您应该重置索引,将日期设置为索引,将索引重置回[ID1,ID2]:

 df = df.reset_index().set_index(['Date']).resample('d').ffill().reset_index().set_index(['ID1','ID2'])

如果“Date”字段是字符串,那么在对该字段重新采样之前,应该将其转换为datetime。您可以使用以下方法:

df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')

相关问题 更多 >