我有一个数据框,其中有10列每日观测值,然后有一个日期列。我想总结一下日常观察,并按月和年对它们进行分组。
数据看起来像这样:
* if (response.errors!= null && response.errors[0].message.indexOf('Error Message') > -1) karate.abort()
我期望的输出是
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
至xx1
是xx6
和2019-05-27
之间的观测值总和。
先谢谢了。
答案 0 :(得分:3)
将DataFrame.resample
与MS
一起用于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