如何将小时添加到pandas dataframe列

Nei*_*eil 4 python datetime dataframe pandas

我有一个像下面这样的pandas数据帧时间列.

 segments_data['time']
 Out[1585]: 
 0      04:50:00
 1      04:50:00
 2      05:00:00
 3      05:12:00
 4      06:04:00
 5      06:44:00
 6      06:44:00
 7      06:47:00
 8      06:47:00
 9      06:47:00
Run Code Online (Sandbox Code Playgroud)

我想在上面的时间栏上添加5小时30分钟.我在python中做跟随.

pd.DatetimeIndex(segments_data['time']) + pd.DateOffset(hours=5,minutes=30)
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误.

TypeError: object of type 'datetime.time' has no len()
Run Code Online (Sandbox Code Playgroud)

请帮忙.

小智 9

从 '0.25.3' 开始,这很简单

df[column] = df[column] + pd.Timedelta(hours=1)
Run Code Online (Sandbox Code Playgroud)


Fab*_*nna 6

您可以尝试导入timedelta:

from datetime import datetime, timedelta
Run Code Online (Sandbox Code Playgroud)

然后:

segments_data['time'] = pd.DatetimeIndex(segments_data['time']) + timedelta(hours=5,minutes=30)
Run Code Online (Sandbox Code Playgroud)


EdC*_*ica 3

这是一种粗糙的方法,主要的问题是缺乏对time对象的矢量化支持,因此您首先需要使用以下方法将 转换time为,然后应用偏移量并取回组件:datetimecombinetime

In [28]:  
import datetime as dt  
df['new_time'] = df['time'].apply(lambda x: (dt.datetime.combine(dt.datetime(1,1,1), x,) + dt.timedelta(hours=3,minutes=30)).time())
df

Out[28]:
           time  new_time
index                    
0      04:50:00  08:20:00
1      04:50:00  08:20:00
2      05:00:00  08:30:00
3      05:12:00  08:42:00
4      06:04:00  09:34:00
5      06:44:00  10:14:00
6      06:44:00  10:14:00
7      06:47:00  10:17:00
8      06:47:00  10:17:00
9      06:47:00  10:17:00
Run Code Online (Sandbox Code Playgroud)