问题描述
我有一组 5 个时间序列数据帧,分辨率为 15 分钟,但它们不会在相同的日期和时间结束。但是,开始日期和时间是相同的。所以,我更愿意把它们剪下来,使它们的长度相同。
然后,我想重塑数据以查看每周模式或 14 天模式。
解决方法
我认为您所说的裁剪是指重新采样日期并取最后一个值。 (如果我错了,请纠正我)
要重新采样,您可以使用 pandas 中的 .resample()
方法(在使用此方法之前将您的时间戳列设置为索引),然后使用 .last()
来获取最后一个值。
>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame({
... 'Timestamp':pd.date_range('2021-06-21 23:07',periods = 200,freq='15min'),... 'Speed':range(200)
>>> })
>>> print(df)
Timestamp Speed
0 2021-06-21 23:07:00 0
1 2021-06-21 23:22:00 1
2 2021-06-21 23:37:00 2
3 2021-06-21 23:52:00 3
4 2021-06-22 00:07:00 4
.. ... ...
195 2021-06-23 23:52:00 195
196 2021-06-24 00:07:00 196
197 2021-06-24 00:22:00 197
198 2021-06-24 00:37:00 198
199 2021-06-24 00:52:00 199
[200 rows x 2 columns]
>>> df_grouped = df.set_index('Timestamp').resample('1H').last()
>>> print(df_grouped.head(10))
Speed
Timestamp
2021-06-21 23:00:00 3
2021-06-22 00:00:00 7
2021-06-22 01:00:00 11
2021-06-22 02:00:00 15
2021-06-22 03:00:00 19
2021-06-22 04:00:00 23
2021-06-22 05:00:00 27
2021-06-22 06:00:00 31
2021-06-22 07:00:00 35
2021-06-22 08:00:00 39