Расчетная колонка timedelta в пандах - PullRequest
0 голосов
/ 28 мая 2019

У меня есть некоторые данные в pandas df, такие как:

time                            delay 
2017/06/14 10:02:10.144927 PM   15 

Время, очевидно, является меткой времени, а задержка в секундах.df.dtypes равны datetime64[ns] и int соответственно.Я хочу добавить столбец, который имеет временную метку исходного времени плюс прошедшие секунды, например:

time                            delay   end_time
2017/06/14 10:02:10.144927 PM   15      2017/06/14 10:02:25.144927 PM

Я пытаюсь сделать

df["end_time"] = df.time.add(datetime.timedelta(seconds = df.time))

Однако я получаю ошибкуTypeError: unsupported type for timedelta seconds component: Series.Как бы я это сделал?Нужна ли лямбда?

1 Ответ

0 голосов
/ 28 мая 2019

Используйте to_timedelta для преобразования целочисленного столбца в timedeltas:

df["end_time"] = pd.to_datetime(df['time']).add(pd.to_timedelta(df.delay, unit='s'))
print (df)
                            time  delay                   end_time
0  2017/06/14 10:02:10.144927 PM     15 2017-06-14 22:02:25.144927

Если в выводе нужен тот же формат, добавьте Series.dt.strftime:

df["end_time"] = (pd.to_datetime(df['time'])
                   .add(pd.to_timedelta(df.delay, unit='s'))
                   .dt.strftime('%Y/%m/%d %H:%M:%S.%f %p'))
print (df)
                            time  delay                       end_time
0  2017/06/14 10:02:10.144927 PM     15  2017/06/14 22:02:25.144927 PM
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...