Python 如何从最后一行开始对时间序列数据进行反向重采样?

Python 如何从最后一行开始对时间序列数据进行反向重采样?,python,pandas,csv,time-series,Python,Pandas,Csv,Time Series,我有几行数据(每秒),我用两个小时对它们进行重采样,对于每个特性,我应用了不同的计算,简言之: data = data.resample('2H').agg({'id':'first','x1': np.sum, 'x2': np.mean}).dropna() 由于每个文件包含一天的记录,因此将产生大约12行,从每天00:00开始 datetime id x1 x2 201

我有几行数据(每秒),我用两个小时对它们进行重采样,对于每个特性,我应用了不同的计算,简言之:

data = data.resample('2H').agg({'id':'first','x1': np.sum, 
                                'x2': np.mean}).dropna()
由于每个文件包含一天的记录,因此将产生大约12行,从每天00:00开始

datetime            id      x1      x2      
2019/05/03 0:00     5603    1324    4600
2019/05/03 2:00     5603    1276    2836
2019/05/03 4:00     5603    184     258
2019/05/03 6:00     5603    546     929
2019/05/03 8:00     5603    2       1
2019/05/03 10:00    5603    6       3
2019/05/03 12:00    5603    8       5
2019/05/03 14:00    5603    835     1798
2019/05/03 16:00    5603    14      7
2019/05/03 18:00    5603    690     1518
2019/05/03 20:00    5603    823     1636
2019/05/03 22:00    5603    972     2547
我的问题是:如何从最后一行向后两小时(或任何时间范围)重新采样? 目前,对于每个CSV文件,最后一行将是我向后重新采样的“起点”,例如:

如果我的最后一行是2019/05/03 09:27:00,那么我需要重新采样2019/05/03 07:27:00到2019/05/03 09:27:00的数据,依此类推


我寻找同样的问题,发现了这个:但无法实现它,以解决我的问题

您可以通过对时间戳应用转换,对转换后的索引重新采样,然后还原转换来完成此操作

end_time = data.index[-1]
data['time to end'] = end_time - data.index
data.set_index('time to end', inplace=True)

data = data.resample('2h').mean() # Or your function

data['datetime'] = end_time - data.index
data.set_index('datetime', inplace=True)

这也快把我逼疯了。我一直觉得重采样应该是我想要的。最终,我通过使用origin参数使其工作

periods = pd.date_range("2020-10-17 15:53:03", "2020-10-17 15:56:56", freq="1s")
ts = pd.Series(range(len(periods)), index=periods)
resampled = ts.resample('60s', origin=ts.index[-1], closed='right', label='right')

这里有一些错误:ValueError:传递值的形状是(1,2),索引暗示(1,0),结束时间显示NaT,知道为什么吗?