按月和年分组并对 Python 中的所有列求和

Group by month and year and sum all columns in Python

我有一个包含 10 列每日观察值的数据框,然后我有一个日期列。我想总结每日观察结果并按月和年分组。

数据看起来类似于:

    ds          c1         c2          c3          c4          c5          c6 
2019-05-27  285.029066  56.891208   404.848509  172.780268  391.853462  -47.865271  
2019-05-28  284.742624  83.432062   419.062742  172.039440  391.919534  -38.753380  
2019-05-29  284.456182  79.556789   413.650187  171.003154  391.985605  -36.871281  
2019-05-30  284.169740  63.251651   406.679183  170.160845  392.174533  -38.606698          
2019-05-31  283.883298  99.122362   441.525001  169.359221  392.463681  -7.067061   

我期望的输出是

   ds    c1  c2  c3  c4  c5  c6
2019-05 xx1 xx2 xx3 xx4 xx5 xx6

其中 xx1xx62019-05-272019-05-31 之间观察值的总和。

提前致谢。

使用 DataFrame.resampleMS 作为 month 的开始:

#datetimeindex
df['ds'] = pd.to_datetime(df['ds'])
df = df.set_index('ds')

df = df.resample('MS').sum()
print (df)
                    c1          c2           c3          c4           c5  \
ds                                                                         
2019-05-01  1422.28091  382.254072  2085.765622  855.342928  1960.396815   

                    c6  
ds                      
2019-05-01 -169.163691  

或使用month periods:

df['ds'] = pd.to_datetime(df['ds'])

df2 = df.groupby(df['ds'].dt.to_period('m')).sum()
print (df2)
                 c1          c2           c3          c4           c5  \
ds                                                                      
2019-05  1422.28091  382.254072  2085.765622  855.342928  1960.396815   

                 c6  
ds                   
2019-05 -169.163691