【问题标题】:Pandas average values for the same hour for each day熊猫每天同一小时的平均值
【发布时间】:2021-05-11 03:55:46
【问题描述】:

Pandas Dataframe, getting average value for each monday 1 Am 的帖子描述了与我现在遇到的类似问题,所以我借用了他们的数据框。但是,我的难度有点大,而且那个解决方案对我来说并没有真正奏效。

time                    value
2016-03-21 00:00:00     0.613014
2016-03-21 01:00:00     0.596383
2016-03-21 02:00:00     0.623570
2016-03-21 03:00:00     0.663350
2016-03-21 04:00:00     0.677817
2016-03-21 05:00:00     0.727116
2016-03-21 06:00:00     0.920279
2016-03-21 07:00:00     1.205863
2016-03-21 08:00:00     0.880946
2016-03-21 09:00:00     0.186947
2016-03-21 10:00:00     -0.563276
2016-03-21 11:00:00     -1.249595
2016-03-21 12:00:00     -1.596035
2016-03-21 13:00:00     -1.886954
2016-03-21 14:00:00     -1.912325
2016-03-21 15:00:00     -1.750623
...     
2016-06-20 23:00:00     2.125791

我需要做的是在特定时间获取每天的平均值。比如说,我必须在凌晨 1 点、然后是凌晨 2 点、然后是凌晨 3 点得到每天的平均值。 我想以分组方式执行此操作,这可能会使我之后所做的滚动平均值更容易,但每种方法都很重要,谢谢!

【问题讨论】:

  • 你的意思是你需要每小时的平均值吗?你说的具体时间是什么意思?提供您需要的示例输出。
  • 我需要一个包含从 2016 年 3 月 1 日到 2016 年 6 月 20 日每天凌晨 1 点、凌晨 2 点和 3 点等的平均值的列。不同日子的同一小时。

标签: python pandas


【解决方案1】:

您可以在单独的列中提取小时数,并通过它groupby()

df['hour'] = df.time.dt.hour
result_df = df.groupby(['hour']).mean()

【讨论】:

    【解决方案2】:

    您可以创建一个临时列,其中包含小时数和组,例如: df['hour'] = df['time'].dt.hour 接着 hour_avg = df.groupby(['hour']).mean() 请注意,这种方法汇总了所有年份、月份和日期的小时数。

    【讨论】:

    • 太棒了!它回答了我的问题,但我还有一个问题。它的输出是一个系列,而我希望它是一个数据框。我试过to_frame,但它并没有真正起作用。没有错误,它运行,只是类型仍然是系列。知道如何解决这个问题,或者只是将结果作为数据框输出?
    • 如果不对其进行测试,我相信您应该能够将其作为列添加到现有数据框中
    猜你喜欢
    • 2020-11-04
    • 2019-11-24
    • 2019-11-24
    • 2021-06-14
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多