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 对日内时间序列数据进行重新采样?