![](/img/trans.png)
[英]How to get max values with groupby of entire dataframe in Pandas, not each row
[英]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.