从python中的15分钟间隔数据中提取小时数据

从python中的15分钟间隔数据中提取小时数据,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧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

我有一个数据帧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

有人能给我介绍一下吗?

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

结果:

  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

如果需要,还可以使用transform将结果指定给df:

结果:

  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
选择1 您可以使用groupby:

输出:

   Year  Month  Day  Hour  Minutes  Reading
0  2011      1    1     0        0      1.6
1  2011      1    1     1        0      1.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_索引和与级别参数求和:

(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
   Year  Month  Day  Hour  Minutes  Reading
0  2011      1    1     0        0      1.6
1  2011      1    1     1        0      1.1
选择1 您可以使用groupby:

输出:

   Year  Month  Day  Hour  Minutes  Reading
0  2011      1    1     0        0      1.6
1  2011      1    1     1        0      1.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_索引和与级别参数求和:

(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
   Year  Month  Day  Hour  Minutes  Reading
0  2011      1    1     0        0      1.6
1  2011      1    1     1        0      1.1