У меня есть 2 столбца (заранее извиняюсь за имена!) «Исходный статус исторического случая» и «Дата начала исторического статуса»:
Исходный статус исторического случая: содержит три статуса для данного случая ИсторическийДата начала статуса: содержит дату для этого статуса для данного случая
Я хотел бы взять каждый статус и отфильтровать его, затем взять соответствующую дату и добавить ее в новый столбец.Я могу выполнить это один раз, однако, когда я пытаюсь сделать это для другого статуса, он работает только для нового столбца, а предыдущий столбец завершается ошибкой.
def closed_cases():
df_copy = df.copy()
df['Date Closed'] = np.nan
df_copy.loc[df['Historical Case Status Raw'] == "Closed", 'Date Closed'] = df['Historical Status Start Date']
return df_copy
Я не уверен, как сделать то же самое для статуса«Зарегистрировано», затем создайте новый столбец под названием «Дата регистрации» и «Новый».
В Excel я выполняю 3 V-поиска, чтобы сделать это с тремя отдельными наборами данных, однако есть объединенный наборданных в этом формате, которые я надеюсь использовать для экономии времени.
Редактировать: Я нашел что-то, что работает, хотя и медленно:
df['Date Closed'] = np.nan
df['Date Enrolled'] = np.nan
df['Date New'] = np.nan
for i in df['Historical Case Status Raw']:
if i == "Closed":
df.loc[df['Historical Case Status Raw'] == "Closed", 'Date Closed'] = df['Historical Status Start Date']
elif i == "Enrolled":
df.loc[df['Historical Case Status Raw'] == "Enrolled", 'Date Enrolled'] = df['Historical Status Start Date']
elif i == "New":
df.loc[df['Historical Case Status Raw'] == "New", 'Date New'] = df['Historical Status Start Date']