如何在时间戳数据帧中按月求和



我有这样的数据帧:

trx_date trx_amount
2013-02-11 35
2014-03-10 26
2011-02-9 10
2013-02-12 5
2013-01-11 21

您可以通过Series.dt.to_period将值转换为月份,然后聚合sum:

df['trx_date'] = pd.to_datetime(df['trx_date'])
df1 = (df.groupby(df['trx_date'].dt.to_period('m').rename('trx_monthly'))['trx_amount']
.sum()
.reset_index(name='trx_sum'))
print (df1)
trx_monthly  trx_sum
0     2011-02       10
1     2013-01       21
2     2013-02       40
3     2014-03       26

或者通过Series.dt.strftime:将日期时间转换为YYYY-MM格式的字符串

df2 = (df.groupby(df['trx_date'].dt.strftime('%Y-%m').rename('trx_monthly'))['trx_amount']
.sum()
.reset_index(name='trx_sum'))
print (df2)
trx_monthly  trx_sum
0     2011-02       10
1     2013-01       21
2     2013-02       40
3     2014-03       26

或者转换为月份和年份,则输出不同-3列:

df2 = (df.groupby([df['trx_date'].dt.year.rename('year'), 
df['trx_date'].dt.month.rename('month')])['trx_amount']
.sum()
.reset_index(name='trx_sum'))
print (df2)
year  month  trx_sum
0  2011      2       10
1  2013      1       21
2  2013      2       40
3  2014      3       26

你可以试试这个-

df['trx_month'] = df['trx_date'].dt.month
df_agg = df.groupby('trx_month')['trx_sum'].sum()

最新更新