Мой фрейм данных Pandas выглядит так:
Обратите внимание, что для каждой задачи есть ровно 2 строки: строка для начала и строка для конца задачи.
Мне нужно создать еще один фрейм данных со столбцами Задача, время начала, время окончания, где каждая строка будет представлять задачу и ее время жизни.
Есть уродливый способ сделать это (используя итерацию). Есть ли элегантный способ?
Проверьте df.pivot()






Используя функцию pandas.pivot(), вы можете просто сделать это, предполагая, что df — это ваш фрейм данных:
new_df = df.pivot(index = "Task", columns = "Action", values = "DateTime")
Другой способ — использовать set_index и unstack:
>>> (df.set_index(['Task', 'Action'])['DateTime'].unstack()
.reset_index().rename_axis(columns=None))
Task begin end
0 1 2022-05-04 16:07:42.580 2022-05-04 16:07:53.565
сортировать по действию -> группировать по задаче -> применять/приводить к pd.Series -> распаковывать