我正在嘗試從一個日期列中創建一項新功能,以提供開始和結束日期。
這是它的樣子:
unique_id = ["001", "001", "001",
"002",
"003", "003"
]
end_dates = ["2018-10-31 12:43:03 PM", "2018-10-31 12:44:23 PM", "2018-10-31 1:01:42 PM",
"2018-11-23 03:33:13 PM",
"2018-11-23 04:10:45 PM", "2018-11-23 04:13:58 PM"
]
activity_class = ["step 1", "step 2", "step 3",
"step 1",
"step 1", "step 2"
]
df = \
pd.DataFrame({"ID": unique_id,
"Edit Date": end_dates,
"Activity": activity_class
})
df["Edit Date"] = pd.to_datetime(df["Edit Date"])
這是我想要的樣子:
unique_id = ["001", "001", "001",
"002",
"003", "003"
]
start_date = ["2018-10-31 12:43:03 PM", "2018-10-31 12:43:03 PM", "2018-10-31 12:44:23 PM",
"2018-11-23 03:33:13 PM",
"2018-11-23 04:10:45 PM", "2018-11-23 04:10:45 PM"
]
end_date = ["2018-10-31 12:43:03 PM", "2018-10-31 12:44:23 PM", "2018-10-31 1:01:42 PM",
"2018-11-23 03:33:13 PM",
"2018-11-23 04:10:45 PM", "2018-11-23 04:13:58 PM"
]
activity_class = ["step 1", "step 2", "step 3",
"step 1",
"step 1", "step 2"
]
df = \
pd.DataFrame({"ID": unique_id,
"Start_Date": start_date,
"End_Date": end_date,
"Activity": activity_class
})
df["Start_Date"] = pd.to_datetime(df["Start_Date"])
df["End_Date"] = pd.to_datetime(df["End_Date"])
到目前為止我嘗試過的:
df["Start_Date"] = df["Edit Date"].shift(1).backfill()
一些規則:
- 資料按唯一 ID 和日期升序排序
- 無論“活動”中的標簽如何,只要它是第一個,開始和結束的日期應該相同
- 下一個活動的開始日期應該復制上一個活動的結束日期
uj5u.com熱心網友回復:
你在找groupby().shift()嗎?
df['Start_Date'] = df['Edit Date']
df['End_Date'] = df.groupby('ID')['Edit Date'].shift().fillna(df['Edit Date'])
輸出:
ID Edit Date Activity Start_Date End_Date
0 001 2018-10-31 12:43:03 step 1 2018-10-31 12:43:03 2018-10-31 12:43:03
1 001 2018-10-31 12:44:23 step 2 2018-10-31 12:44:23 2018-10-31 12:43:03
2 001 2018-10-31 13:01:42 step 3 2018-10-31 13:01:42 2018-10-31 12:44:23
3 002 2018-11-23 15:33:13 step 1 2018-11-23 15:33:13 2018-11-23 15:33:13
4 003 2018-11-23 16:10:45 step 1 2018-11-23 16:10:45 2018-11-23 16:10:45
5 003 2018-11-23 16:13:58 step 2 2018-11-23 16:13:58 2018-11-23 16:10:45
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/346971.html
上一篇:在大型嵌套字典中查找特定鍵
