我有一个数据帧,我想在开始时间列中添加持续时间(以秒为单位)以获得结束时间。开始时间和结束时间列为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