【问题标题】:Clipping timeseries data to nearest hour or the nearest day将时间序列数据剪裁到最近的小时或最近的一天
【发布时间】:2021-07-29 07:07:30
【问题描述】:

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

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

数据如下所示:

【问题讨论】:

    标签: python-3.x time-series reshape


    【解决方案1】:

    我认为剪辑的意思是重新采样日期并取最后一个值。 (如果我错了,请纠正我

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

    【讨论】:

    • 太棒了!不知何故,我错过了 .last()。再次感谢
    猜你喜欢
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 2021-05-07
    • 2015-01-04
    相关资源
    最近更新 更多