Посчитать разницу между датами
Есть 2 столбца в датафрейме( один - со статусом заявки, другой - дата изменения статуса). В столбце статусов может быть несколько значений, нас интересуют "Объект подключен" и "Поступление заявки". У одного ключа заявки может быть несколько статусов. Хочется посчитать разницу в днях между 2мя указанными статусами, но в лоб не получается сделать, так как появляется ошибка ValueError: cannot reindex from a duplicate axis
data[data['Статус заявки']=="Объект подключен"]['Дата изменения статуса']
еще пробовала
data.groupby(['_key'])['Дата изменения статуса'].diff(), но возвращает NaT
Ответы (1 шт):
Если предварительно почистить ваши данные, то можно отталкиваться от того, что начало и завершение заявки для каждого ключа - это минимальная и максимальная даты соответственно. В таком случае можно попробовать так сделать:
df1 = df[df["Дата изменения статуса"].str.contains("\d")]
df1["Дата изменения статуса"] = pd.to_datetime(df1["Дата изменения статуса"], format='%m/%d/%Y', errors="coerce").dropna()
res = df1.groupby("_key")["Дата изменения статуса"].apply(lambda x: max(x)-min(x))
print(res.head(30))
что выдаст для первых 30 идентификаторов:
_key
15234 0 days
15699 0 days
15712 0 days
15724 0 days
16124 0 days
16127 0 days
18736 0 days
19336 0 days
19638 0 days
20220 0 days
20298 0 days
20319 0 days
20418 0 days
20429 0 days
20476 0 days
21575 1306 days
21576 1 days
22727 0 days
22780 34 days
24588 399 days
24662 0 days
24666 0 days
24737 0 days
24743 253 days
24808 0 days
24826 0 days
24978 0 days
24983 193 days
26098 33 days
26204 755 days