簡體   English   中英

如何獲取包含 groupby 中最大值總和的數據幀?

[英]How to get a dataframe with the sum of the max values in a groupby?

我有這樣的數據框:

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

我需要按月分組並獲得每個類別(貓)的最大值之和。 我不需要這個結果數據框中的貓信息。

它會是這樣的:

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM