如何将原始数据转换为固定频率的时间序列?

数据挖掘 时间序列 熊猫 特征提取 特征构造 数据框
2021-09-26 03:22:21

如何将原始数据转换为固定频率的时间序列?

例如,我在 DataFrame 中有以下原始数据

                       A    B
2017-01-01 00:01:01    0    100
2017-01-01 00:01:10    1    200
2017-01-01 00:01:16    2    300
2017-01-01 00:02:35    3    100
2017-01-01 00:02:40    4    100

我想把它变成一个时间序列:

  1. 1分钟频率
  2. A列应该有时间间隔内的值的总和
  3. B列应该具有时间间隔内的平均值
  4. 可能在其他列上的其他功能

注意:原始数据不是周期性的。

转换后的数据应该是:

                       A    B
2017-01-01 00:01:00    3    200
2017-01-01 00:02:00    7    100
1个回答

这种效果可以通过 pandas.DataFrame.resample()结合Resampler.aggregate()like来实现:

代码:

df.resample("1Min").agg({'A': sum, 'B': np.mean})

测试代码:

df = pd.read_fwf(StringIO(u"""
                           A    B
    2017-01-01T00:01:01    0    100
    2017-01-01T00:01:10    1    200
    2017-01-01T00:01:16    2    300
    2017-01-01T00:02:35    3    100
    2017-01-01T00:02:40    4    100"""),
                  header=1, parse_dates=[0], index_col=0)

print(df)    
print(df.resample("1Min").agg({'A': sum, 'B': np.mean}))

结果:

                     A    B
2017-01-01 00:01:01  0  100
2017-01-01 00:01:10  1  200
2017-01-01 00:01:16  2  300
2017-01-01 00:02:35  3  100
2017-01-01 00:02:40  4  100

                     A    B
2017-01-01 00:01:00  3  200
2017-01-01 00:02:00  7  100