【问题标题】: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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 2021-05-05
    • 2017-12-19
    • 2015-04-03
    • 2020-02-21
    • 2016-07-19
    相关资源
    最近更新 更多