我有一個如下所示的資料框:
cuid day transactions
0 a mon 1
1 a tue 2
2 b tue 2
3 b wed 1
對于每個“cuid”(客戶 ID),我想找到交易次數最多的那一天。例如對于上面的df,輸出應該是一個看起來像的df
cuid day transactions
1 a tue 2
2 b tue 2
我嘗試過如下代碼:
dd = {'cuid':['a','a','b','b'],'day':['mon','tue','tue','wed'],'transactions':[1,2,2,1]}
df = pd.DataFrame(dd)
dfg = df.groupby(by=['cuid']).agg(transactions=('transactions',max)).reset_index()
但我不知道如何加入dfg和df。
uj5u.com熱心網友回復:
方法1
idxmax為您提供某個列值(位于transaction此處)為最大值的索引。
首先我們設定索引,
step1 = df.set_index(['day', 'cuid'])
然后我們找到 idxmax,
indices = step1.groupby('cuid')['transactions'].idxmax()
我們得到結果
step1.loc[indices].reset_index()
方法2
df.groupby('cuid')\
.apply(lambda df: df[df['transactions']==df['transactions'].max()])\
.reset_index(drop=True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/439340.html
