如何将秒转换为时间在timedelta中以HH:MM:SS表示



我有一个数据帧,我想在开始时间列中添加持续时间(以秒为单位)以获得结束时间。开始时间和结束时间列为datetime64[ns]类型,持续时间为[int64]类型

start-time,duration
2012-01-02 05:57:38,1168
2012-04-02 06:18:39,58

我首先将duration列转换为timedelta格式的hh:mm:ss,以便进行加法。持续时间列被成功转换为timedelta,但显示为1970-01-01T00:19:28Z。我怎样才能摆脱1970日期部分,只保留hh:mm:ss时间部分,但仍然作为timedelta类型。

我试过下面的

df['duration'] = df['duration'].astype('float64')
df['duration'] = pd.to_datetime(df['duration'], unit='s').dt.strftime("%H:%M:%S")
df['duration'] = pd.to_timedelta(df['duration'])
df['end-time'] = df['start-time'] + df['duration']

start-time,end-time,duration
2012-04-02 05:57:38,2012-04-02 06:17:06,1970-01-01T00:19:28Z
2012-04-02 06:18:39,2012-04-02 06:19:37,1970-01-01T00:00:58Z

期望输出值

start-time,end-time,duration
2012-01-02 05:57:38,2012-04-02 06:17:06,00:19:28
2012-04-02 06:18:39,2012-04-02 06:19:37,00:00:58

你不需要从int ->浮动→datetime→timedelta

你可以直接从int seconds到timedelta

df['duration'] = pd.to_timedelta(df['duration'], unit='s')
df['end-time'] = df['start-time'] + df['duration']
df = df[['start-time','end-time','duration']]

输入

start-time  duration
2012-01-02 05:57:38      1168
2012-04-02 06:18:39        58

输出

start-time            end-time        duration
2012-01-02 05:57:38 2012-01-02 06:17:06 0 days 00:19:28
2012-04-02 06:18:39 2012-04-02 06:19:37 0 days 00:00:58

相关内容

最新更新