【问题标题】:How can I sum the total Amount by each month and group them by the categories如何按每个月汇总总金额并按类别分组
【发布时间】:2020-01-08 23:51:57
【问题描述】:
我想按每个月以及每个类别对总数进行分组。我似乎无法弄清楚如何做到这两点。我可以得到每个月的总数,或者我可以得到每个类别的总数,但是如何将它们结合起来?
我尝试了groupby函数和grouper函数。
data = pd.read_csv(csv_file)
data['Transaction Date'] = pd.to_datetime(data['Transaction Date'])
data = data.set_index('Transaction Date')
data.resample("M").sum()
category = data.groupby(['Category']).sum()
我只得到类别分组或月份分组的总和,但不能同时获得两者。
【问题讨论】:
标签:
python
pandas
dataframe
jupyter-notebook
【解决方案1】:
我相信你需要:
data = pd.DataFrame({
'Transaction Date':pd.to_datetime(['09/03/2019','09/20/2019','08/25/2019',
'08/25/2019','08/26/2019', '06/10/2019']),
'Amount':[7,8,9,4,2,3],
'Category':list('aaabbb')
})
print (data)
Transaction Date Amount Category
0 2019-09-03 7 a
1 2019-09-20 8 a
2 2019-08-25 9 a
3 2019-08-25 4 b
4 2019-08-26 2 b
5 2019-06-10 3 b
df = data.set_index('Transaction Date').groupby('Category').resample("M").sum()
print (df)
Amount
Category Transaction Date
a 2019-08-31 9
2019-09-30 15
b 2019-06-30 3
2019-07-31 0
2019-08-31 6
data = data.set_index('Transaction Date')
df = data.groupby(['Category', pd.Grouper(freq='M')]).sum()
print (df)
Amount
Category Transaction Date
a 2019-08-31 9
2019-09-30 15
b 2019-06-30 3
2019-08-31 6