【发布时间】: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)
标签: python pandas datetime time-series timestamp