我現在在這個問題上摸不著頭腦。我有一個帶有案例 ID、活動 ID 和活動發生日期的日志。我需要添加一個表示結束時間戳(DATEEND)的列,但我不知道如何將每個案例 ID 的 DATEEND 列中的最后一個日期作為 DATESTART 列中的最后一個日期。
我正在考慮使用 groupby() 和 shift(-1),但后來我不知道如何修復最后一個日期。任何想法?
輸入:
CASEID ACTIVITYID DATESTART
725/2022 _0 2022-03-09
725/2022 0F 2022-03-23
725/2022 YB 2022-06-21
725/2022 AA 2022-06-28
725/2022 1F 2022-06-28
725/2022 2B 2022-06-29
444/2022 AA 2022-07-26
444/2022 1F 2022-07-28
444/2022 2B 2022-07-28
輸出:
CASEID ACTIVITYID DATESTART DATEEND
725/2022 _0 2022-03-09 2022-03-23
725/2022 0F 2022-03-23 2022-06-21
725/2022 YB 2022-06-21 2022-06-28
725/2022 AA 2022-06-28 2022-06-28
725/2022 1F 2022-06-28 2022-06-29
725/2022 2B 2022-06-29 2022-06-29
444/2022 AA 2022-07-26 2022-07-28
444/2022 1F 2022-07-28 2022-07-28
444/2022 2B 2022-07-28 2022-07-28
謝謝!
uj5u.com熱心網友回復:
Series.fillna按列使用DATESTART:
df['DATEEND'] = df.groupby('CASEID')['DATESTART'].shift(-1).fillna(df['DATESTART'])
print (df)
CASEID ACTIVITYID DATESTART DATEEND
0 725/2022 _0 2022-03-09 2022-03-23
1 725/2022 0F 2022-03-23 2022-06-21
2 725/2022 YB 2022-06-21 2022-06-28
3 725/2022 AA 2022-06-28 2022-06-28
4 725/2022 1F 2022-06-28 2022-06-29
5 725/2022 2B 2022-06-29 2022-06-29
6 444/2022 AA 2022-07-26 2022-07-28
7 444/2022 1F 2022-07-28 2022-07-28
8 444/2022 2B 2022-07-28 2022-07-28
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/522206.html
