【问题标题】:Extracting hourly data from 15 minutes interval data in python pandas从python pandas中的15分钟间隔数据中提取每小时数据
【发布时间】:2017-12-17 02:37:21
【问题描述】:

我有一个数据框 df:

Year Month  Day Hour Minute Reading
2011   1     1    0     0      1
2011   1     1    0    15     0.2
2011   1     1    0    30     0.4
2011   1     1    0    45     0.0
2011   1     1    1     0     0.2 
2011   1     1    1    15     0.5 
2011   1     1    1    30     0.3 
2011   1     1    1    45     0.1

上述数据帧有 15 分钟的间隔数据。我希望添加一个新列并获得每 4 个读数的总和,从而将其转换为每小时数据。例如,对于第 '0' 小时,它是 (1+0.2+0.4+0.0 = 1.6)。

因此我的输出应该如下所示:

Year Month  Day Hour Minute Hourly_Reading
2011   1     1   0     0        1.6
2011   1     1   1     0        1.1

有人可以指导我吗?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    选项 1

    你可以使用groupby:

    (df.groupby(['Year','Month','Day','Hour'])['Reading']
        .sum()
        .reset_index()
        .assign(Minutes=0)
        .reindex_axis(['Year','Month','Day','Hour','Minutes','Reading'],axis=1))
    

    输出:

       Year  Month  Day  Hour  Minutes  Reading
    0  2011      1    1     0        0      1.6
    1  2011      1    1     1        0      1.1
    

    选项 2

    将set_index 和sum 与level 参数一起使用:

    (df.set_index(['Year','Month','Day','Hour'])['Reading']
        .sum(level=[0,1,2,3])
        .reset_index()
        .assign(Minutes=0)
        .reindex_axis(['Year','Month','Day','Hour','Minutes','Reading'],axis=1))
    

    输出:

       Year  Month  Day  Hour  Minutes  Reading
    0  2011      1    1     0        0      1.6
    1  2011      1    1     1        0      1.1
    

    【讨论】:

      【解决方案2】:

      如果您愿意,也可以将结果分配给df 和transform:

      df['Hourly_Reading'] = df.groupby(['Month', 'Hour'])['Reading'].transform('sum')
      

      结果:

        Year  Month  Day  Hour  Minute  Reading  Hourly_Reading
      0  2011      1    1     0       0      1.0             1.6
      1  2011      1    1     0      15      0.2             1.6
      2  2011      1    1     0      30      0.4             1.6
      3  2011      1    1     0      45      0.0             1.6
      4  2011      1    1     1       0      0.2             1.1
      5  2011      1    1     1      15      0.5             1.1
      6  2011      1    1     1      30      0.3             1.1
      7  2011      1    1     1      45      0.1             1.1
      

      【讨论】:

        猜你喜欢
        • 2023-03-21
        • 1970-01-01
        • 2016-08-18
        • 1970-01-01
        • 2019-05-18
        • 1970-01-01
        • 2022-11-13
        • 2017-10-31
        • 1970-01-01
        相关资源
        最近更新 更多