現有資料框:
Id sms_sent_date sms_number Action_date action_performed
A 21-11-2021 1 21-11-2021 opened
A 22-11-2021 2 22-11-2021 clicked
A 23-11-2021 3 23-11-2021 opened
A 23-11-2021 3 23-11-2021 proceeded
A 23-11-2021 3 23-11-2021 halted
B 11-12-2021 1 11-12-2021 opened
B 12-12-2021 2 12-12-2021 opened
B 12-12-2021 2 12-12-2021 clicked
B 12-12-2021 2 12-12-2021 succeded
預期資料框:
Id sms_sent_date sms_number Action_date action_performed
A 23-11-2021 3 23-11-2021 opened
B 12-12-2021 2 12-12-2021 opened
我試圖找出每個用戶的最后一個 sms_sent_date 的初始 Action_date 和第一個 action_performed 是什么
我知道使用此代碼sms_max = df.groupby(['Id']).agg({'sms_sent_date ': [np.max]})
我可以獲得最后發送的短信日期,但是如何從其他列中獲取相應的資訊
uj5u.com熱心網友回復:
sms_sent_date按每組的最大值過濾行GroupBy.transform,然后按以下方式獲得第一Id行DataFrame.drop_duplicates:
df1 = (df[df['sms_sent_date'].eq(df.groupby(['Id'])['sms_sent_date'].transform('max'))]
.drop_duplicates('Id'))
print (df1)
Id sms_sent_date sms_number Action_date action_performed
2 A 23-11-2021 3 23-11-2021 opened
6 B 12-12-2021 2 12-12-2021 opened
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/518020.html
標籤:Python熊猫
上一篇:拆分熊貓中的地址列
下一篇:如何用ngIf比較兩個日期
