#python #pandas #dataframe
Вопрос:
У меня есть фрейм данных с двумя столбцами, ["StartDate" ,"duration"]
элементы в StartDate
столбце- datetime
тип, а элементы duration
-ints.
Что-то вроде:
StartDate Duration
08:16:05 20
07:16:01 20
Я ожидаю, что получу:
EndDate
08:16:25
07:16:21
Просто добавьте секунды к часу.
Я бы проверил некоторые идеи об этом, такие как типы дельта-времени и то, что все эти даты имеют возможности добавлять дельта-время, но пока я могу найти, как это сделать с кадрами данных (векторным способом, потому что может быть возможно повторять все строки, выполняющие операцию ).
Комментарии:
1. Пожалуйста, добавьте некоторые примеры данных и ожидаемые результаты к этому вопросу
Ответ №1:
рассмотрим этот df
StartDate duration
0 01/01/2017 135
1 01/02/2017 235
Вы можете получить столбец даты и времени следующим образом
df['EndDate'] = pd.to_datetime(df['StartDate']) pd.to_timedelta(df['duration'], unit='s')
df.drop('StartDate,'duration', axis = 1, inplace = True)
Вы получаете
EndDate
0 2017-01-01 00:02:15
1 2017-01-02 00:03:55
ИЗМЕНИТЬ: с помощью образца кадра данных, который вы опубликовали
df['EndDate'] = pd.to_timedelta(df['StartDate']) pd.to_timedelta(df['Duration'], unit='s')
Комментарии:
1. Привет. Я получаю эту ошибку, когда пытаюсь сделать это «ошибка типа: тип данных «дата-время» не понято» проблема в том, что я пытаюсь добавить временные интервалы.
2. Да, я пытаюсь использовать timedelta вместо datetime.
3. Если я выполняю pd.to_timedelta(df[‘Дата начала’]) или pd.to_timedelta(df[‘Продолжительность’], единица измерения= «s») отдельно, я не получаю ошибок, но когда я пытаюсь их добавить, это приводит к ошибке этого типа.
4. По — видимому, проблема уже решена и может быть решена путем обновления pandas. Какую версию вы используете? Я использую «0.19.2», и решение отлично работает для меня.
Ответ №2:
df.StartDate = df.apply(lambda x: pd.to_datetime(x.StartDate) pd.Timedelta(Second(df.duration)) ,axis = 1)
Комментарии:
1. Что это
Second
?