![](/img/trans.png)
[英]How to aggregate sum, and convert unique row values to column names, in pandas?
[英]How to groupby column and find the unique row then apply sum() in pandas
我有一個數據框:
Title Product No Type
A Mo 3 Sky
A Mo 3 Sky
A Mo 3 Sky
A Md 2 Sky
A Md 3 Sky
A Md 2 Sky
A Md 6 Land
A Md 6 Land
A Md 6 Land
A Mo 5 Land
A Mo 5 Land
我希望有一個volume列,該列是No但groupby Type列的總和,然后僅找到唯一的行並將其匯總,以下是我的預期結果:
Title Product No Type Sum
A Mo 3 Sky 8
A Mo 3 Sky 8
A Mo 3 Sky 8
A Md 2 Sky 8
A Md 2 Sky 8
A Md 2 Sky 8
A Md 6 Land 11
A Md 6 Land 11
A Md 6 Land 11
A Mo 5 Land 11
A Mo 5 Land 11
我嘗試運行下面的代碼,但出現錯誤無法訪問“ DataFrameGroupBy”對象的可調用屬性“ groupby”,請嘗試使用“ apply”方法
碼:
FamilyVsM['Sum']=(FamilyVsM.groupby(['Type']).groupby(['Title','Product'])['No'].transform(lambda x: np.unique(x).sum()))
IIUIC,您需要做
In [715]: df['Sum'] = df.groupby('Type')['No'].transform(lambda x: x.unique().sum())
In [716]: df
Out[716]:
Title Product No Type Sum
0 A Mo 3 Sky 5
1 A Mo 3 Sky 5
2 A Mo 3 Sky 5
3 A Md 2 Sky 5
4 A Md 2 Sky 5
5 A Md 2 Sky 5
6 A Md 6 Land 11
7 A Md 6 Land 11
8 A Md 6 Land 11
9 A Mo 5 Land 11
10 A Mo 5 Land 11
這不是一個行代碼,但可能有效
# First, group by 'Type' and sum 'No'
df_group = df.groupby(['Type'], as_index=False)['No'].sum().rename(columns={'No': 'Sum'})
# Second, merge by 'Type'
df.merge(df_group, how='left', left_on='Type', right_on='Type')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.