将时间序列数据裁剪为最近的小时或最近的一天

问题描述

我有一组 5 个时间序列数据帧,分辨率为 15 分钟,但它们不会在相同的日期和时间结束。但是,开始日期和时间是相同的。所以,我更愿意把它们剪下来,使它们的长度相同。

然后,我想重塑数据以查看每周模式或 14 天模式。

数据如下:

enter image description here

解决方法

我认为您所说的裁剪是指重新采样日期并取最后一个值。 (如果我错了,请纠正我

要重新采样,您可以使用 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