我有這樣的客戶交易資料集:
| ID | 日期 | 數量 |
|---|---|---|
| 1 | 1-1-21 | 5 |
| 2 | 2-1-21 | 8 |
| 1 | 2-1-21 | 6 |
| 1 | 3-1-21 | 5 |
| 2 | 3-1-21 | 9 |
| 2 | 3-1-21 | 10 |
我必須像這樣分組并匯總客戶級別的資料:
| ID | 總金額 | 活躍天數 |
|---|---|---|
| 1 | 16 | 3 |
| 2 | 27 | 2 |
Total Amount= 所有Amount列的總和
Number of days active = 客戶進行 1 次或多次交易的天數
我如何計算我的列Number of days active?到目前為止,我已經嘗試過:
df= df.groupby('ID').agg({'Amount': lambda price: price.sum(),
'Date': lambda date: len(date).days})
我的Total Amount專欄很好,但我找不到Number of days active
uj5u.com熱心網友回復:
讓我們做groupby有agg:nunique sum
out = df.groupby('ID').agg(Numberofdaysactive = ('Date','nunique'),TotalAmount = ('Amount','sum')).reset_index()
out
Out[384]:
ID Numberofdaysactive TotalAmount
0 1 3 16
1 2 2 27
uj5u.com熱心網友回復:
nunique應該是你需要的。也就是說,聚合 df 可以通過以下方式計算:
df_agg = df.groupby('ID').agg({"Amount":sum, "Date":pd.Series.nunique})
請注意如何將函式句柄直接傳遞給agg.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/369405.html
標籤:Python 熊猫 数据框 pandas-groupby 总计的
上一篇:Pandas日期列:日期轉換問題
下一篇:熊貓計數列a如果列b條件
