如何在熊猫的时间戳中对总和进行分组?

时间:2017-06-02 13:08:54

标签: python pandas resampling

一年的数据显示如下:

datetime                 data
2008-01-01 00:00:00      0.044
2008-01-01 00:30:00      0.031
2008-01-01 01:00:00      -0.25
    .....
2008-01-31 23:00:00      0.036
2008-01-31 23:30:00      0.42
2008-01-02 00:00:00      0.078
2008-01-02 00:30:00      0.008
2008-01-02 01:00:00      0.09
2008-01-02 01:30:00      0.054
    .....
2008-12-31 22:00:00      0.55
2008-12-31 22:30:00      0.05
2008-12-31 23:00:00      0.08
2008-12-31 23:30:00      0.033

每半小时有一个值。我想要一天中所有值的总和,因此转换为365行值。

year     day   sum values
2008     1         *    
2008     2         *
 ...
2008     364       *
2008     365       *

1 个答案:

答案 0 :(得分:2)

您可以将dt.year + dt.dayofyeargroupby一起使用并汇总sum

df = df.groupby([df['datetime'].dt.year, df['datetime'].dt.dayofyear]).sum()
print (df)
                    data
datetime datetime       
2008     1        -0.175
         2         0.230
         31        0.456
         366       0.713

如果需要DataFrame,则可以将索引转换为列,并按reset_index + rename_axis设置列名:

df = df.groupby([df['datetime'].dt.year, df['datetime'].dt.dayofyear])['data']
       .sum()
       .rename_axis(('year','dayofyear'))
       .reset_index()
print (df)
   year  dayofyear   data
0  2008          1 -0.175
1  2008          2  0.230
2  2008         31  0.456
3  2008        366  0.713