Pandas 将 5 分钟数据重新采样为每小时平均值:日期问题 [重复]

Posted

技术标签:

【中文标题】Pandas 将 5 分钟数据重新采样为每小时平均值:日期问题 [重复]【英文标题】:Pandas Resample 5 mins data to Hourly average : Date issue [duplicate] 【发布时间】:2021-11-24 15:07:40 【问题描述】:

我正在尝试将时间序列数据从 5 分钟频率重新采样为每小时平均值。

 df = pd.read_csv("my_data.csv", index_col=False, usecols=['A','B','C'])

输出:

         A            B      C
0   16-01-21 0:00   95.75   0.0
1   16-01-21 0:05   90.10   0.0
2   16-01-21 0:10   86.26   0.0
3   16-01-21 0:15   92.72   0.0
4   16-01-21 0:20   81.54   0.0

df.A= pd.to_datetime(df.A)

输出:

             A            B      C
0   2021-01-16 00:00:00 95.75   0.0
1   2021-01-16 00:05:00 90.10   0.0
2   2021-01-16 00:10:00 86.26   0.0
3   2021-01-16 00:15:00 92.72   0.0
4   2021-01-16 00:20:00 81.54   0.0

现在我将时间戳列设置为索引,

df.set_index('A', inplace=True)

当我尝试重新采样时

df2 = df.resample('H').mean()

我收到了,

                       B         C
        A       
2021-01-02 00:00:00 79.970278   0.0
2021-01-02 01:00:00 77.951667   0.0
2021-01-02 02:00:00 77.610556   0.0
2021-01-02 03:00:00 80.800000   0.0
2021-01-02 04:00:00 84.305000   0.0

期待这种带有每小时平均值的时间戳,

       A             B         C
2021-01-16 00:00:00 79.970278   0.0
2021-01-16 01:00:00 77.951667   0.0
2021-01-16 02:00:00 77.610556   0.0
2021-01-16 03:00:00 80.800000   0.0
2021-01-16 04:00:00 84.305000   0.0

我不确定我在哪里犯了错误。帮帮我。

【问题讨论】:

hej @Aswin,我看不出你的问题出在哪里。当我为您提供的数据框(5 行)运行代码时,它会正确输出一个平均值 = 一行,因为所有时间戳都在一小时内。 嗨@Per Joachim,感谢您的回复。我得到的输出显示日期为 1 月 2 日。但我实际上有从 1 月 16 日到 9 月 16 日的数据。我希望一天能得到 24 行。与平均值。对于我放在那里的预期值,我只是更改了时间戳以反映我原始数据集中的日期。 嗨@Corralien,不同之处在于时间戳,我希望获得 1 月 16 日的每小时平均值。但到了 1 月 2 日。 hej @Aswin,当我运行您的代码时,我看到了正确时间戳的结果。所以也许你应该添加整个数据集,以便我们可以重现错误 我认为您需要将df.A= pd.to_datetime(df.A) 更改为df.A= pd.to_datetime(df.A, dayfirst=True) 【参考方案1】:

我认为这里的问题是一些日期时间被错误地转换:

#default is month first in df.A= pd.to_datetime(df.A)
01-02-21 -> 2021-01-02

可能的解决方案:

df.A= pd.to_datetime(df.A, dayfirst=True)

或者:

df = pd.read_csv("my_data.csv", 
                 index_col=False, 
                 usecols=['A','B','C'], 
                 parse_dates=['A'], 
                 dayfirst=True)

【讨论】:

以上是关于Pandas 将 5 分钟数据重新采样为每小时平均值:日期问题 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 将时间序列数据重新采样为 15 分钟和 45 分钟 - 使用多索引或列

每小时重新采样数据帧

无法从 1 分钟到 5 分钟的数据重新采样 pandas 时间序列

如何在 Pandas/Numpy 中使用 dateOffset 对日内时间序列数据进行重新采样?

将每小时数据重新采样为每日数据并在 python 中的特定列上求和

Python pandas 将 15 分钟 ohlc 重新采样为 75 分钟 ohlc