如何将 pandas Dataframe 时间序列数据从 8hz 重采样到 16hz?
How to resample pandas Dataframe time series data from 8hz to 16hz?
我在 pandas 数据帧中有时间序列数据,采样率为 8hz,即每秒 8 个样本。我需要将它转换为 16 赫兹数据,即每秒 16 个样本。
索引位于第一列,格式为 yyyy-mm-dd hh:mm:ss.ssssss。
我无法使用标准 pandas 命令重新采样。
一个人可以帮助我如何做到这一点吗?
其他答案涉及小时 'H'、分钟 'm',但有人可以帮助我了解数据是亚秒级的吗。
其实你也可以用同样的方法来做。 Pandas resample 支持最大纳秒的值。以下是一些需要牢记的值:
S seconds
L milliseconds
U microseconds
N nanoseconds
对于您的情况,每秒 8 个样本相当于 125 毫秒,每秒 16 个样本相当于 62.5 毫秒。
生成一个例子(8hz):
index = pd.date_range('1/1/2000', periods=9, freq='125L')
series = pd.Series(range(9), index=index)
给出:
2000-01-01 00:00:00.000 0
2000-01-01 00:00:00.125 1
2000-01-01 00:00:00.250 2
2000-01-01 00:00:00.375 3
2000-01-01 00:00:00.500 4
2000-01-01 00:00:00.625 5
2000-01-01 00:00:00.750 6
2000-01-01 00:00:00.875 7
2000-01-01 00:00:01.000 8
重新采样:
series = series.resample('62.5L').ffill()
给出:
2000-01-01 00:00:00.000000 0
2000-01-01 00:00:00.062500 0
2000-01-01 00:00:00.125000 1
2000-01-01 00:00:00.187500 1
2000-01-01 00:00:00.250000 2
2000-01-01 00:00:00.312500 2
2000-01-01 00:00:00.375000 3
2000-01-01 00:00:00.437500 3
2000-01-01 00:00:00.500000 4
2000-01-01 00:00:00.562500 4
2000-01-01 00:00:00.625000 5
2000-01-01 00:00:00.687500 5
2000-01-01 00:00:00.750000 6
2000-01-01 00:00:00.812500 6
2000-01-01 00:00:00.875000 7
2000-01-01 00:00:00.937500 7
2000-01-01 00:00:01.000000 8
我在 pandas 数据帧中有时间序列数据,采样率为 8hz,即每秒 8 个样本。我需要将它转换为 16 赫兹数据,即每秒 16 个样本。 索引位于第一列,格式为 yyyy-mm-dd hh:mm:ss.ssssss。 我无法使用标准 pandas 命令重新采样。 一个人可以帮助我如何做到这一点吗? 其他答案涉及小时 'H'、分钟 'm',但有人可以帮助我了解数据是亚秒级的吗。
其实你也可以用同样的方法来做。 Pandas resample 支持最大纳秒的值。以下是一些需要牢记的值:
S seconds
L milliseconds
U microseconds
N nanoseconds
对于您的情况,每秒 8 个样本相当于 125 毫秒,每秒 16 个样本相当于 62.5 毫秒。
生成一个例子(8hz):
index = pd.date_range('1/1/2000', periods=9, freq='125L')
series = pd.Series(range(9), index=index)
给出:
2000-01-01 00:00:00.000 0
2000-01-01 00:00:00.125 1
2000-01-01 00:00:00.250 2
2000-01-01 00:00:00.375 3
2000-01-01 00:00:00.500 4
2000-01-01 00:00:00.625 5
2000-01-01 00:00:00.750 6
2000-01-01 00:00:00.875 7
2000-01-01 00:00:01.000 8
重新采样:
series = series.resample('62.5L').ffill()
给出:
2000-01-01 00:00:00.000000 0
2000-01-01 00:00:00.062500 0
2000-01-01 00:00:00.125000 1
2000-01-01 00:00:00.187500 1
2000-01-01 00:00:00.250000 2
2000-01-01 00:00:00.312500 2
2000-01-01 00:00:00.375000 3
2000-01-01 00:00:00.437500 3
2000-01-01 00:00:00.500000 4
2000-01-01 00:00:00.562500 4
2000-01-01 00:00:00.625000 5
2000-01-01 00:00:00.687500 5
2000-01-01 00:00:00.750000 6
2000-01-01 00:00:00.812500 6
2000-01-01 00:00:00.875000 7
2000-01-01 00:00:00.937500 7
2000-01-01 00:00:01.000000 8