我在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
。我该怎么做?我需要一个lambda吗?
答案 0 :(得分:0)
使用to_timedelta
将整数列转换为时间增量:
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