2017-06-02 82 views
1

一年多的數據表明:如何在熊貓的時間戳上分組總和?

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  * 

回答

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 
+1

'dayofyear',太棒了! – Cobin

+0

週末愉快,祝你好運! – jezrael