Python 如何获得groupby中最大值总和的数据帧?

Python 如何获得groupby中最大值总和的数据帧?,python,pandas,dataframe,Python,Pandas,Dataframe,我有这样的数据帧: base = {"month": [201901, 201901, 201902, 201902, 201902], "cat": ['0101', '0102', '0201', '0201', '0203'], "value": [1, 2, 3, 4, 5]} df = pd.DataFrame.from_dict(base) df month cat value 0 201901

我有这样的数据帧:

base = {"month": [201901, 201901, 201902, 201902, 201902], "cat": ['0101', '0102', '0201', '0201', '0203'],  "value": [1, 2, 3, 4, 5]}
df = pd.DataFrame.from_dict(base)
df
    month   cat     value
0   201901  0101    1
1   201901  0102    2
2   201902  0201    3
3   201902  0201    4
4   201902  0203    5
我需要按月分组,并获得每个类别(cat)的最大值之和。 我不需要这个结果数据框中的cat信息

应该是这样的:

    month   value
    201901  3 # (1+2, from cat 0101 + cat 0102)
    201902  9 # (4+5, from the maximum value of cat 0201 + cat 0203)

我可以通过两个步骤达到这个目的,比如:

temp = df.groupby(['month', 'cat']).max()
finaldf = temp.groupby('month').sum()
问题是:有没有其他优雅的方法来实现这一点,使用聚合、idmax或其他方法


提前感谢

我们可以删除重复项并汇总:

(df.sort_values(['value']).drop_duplicates(['month','cat'], keep='last')
   .groupby('month')['value'].sum()
)
输出:

month
201901    3
201902    9
Name: value, dtype: int64

我看到的唯一“更优雅的方式”是将它写在一行中,如:
df.groupby(['month','cat']).max().groupby('month').sum()
。尽管这个解决方案远远不够优雅(在我看来),但我还是会接受这个答案,因为它提供了一种不同的方法。谢谢