如何将小时添加到熊猫数据框列

新手上路,请多包涵

我有一个 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

我想在上面的时间栏中添加 5 小时 30 分钟。我正在用 python 进行跟踪。

 pd.DatetimeIndex(segments_data['time']) + pd.DateOffset(hours=5,minutes=30)

但它给了我一个错误。

 TypeError: object of type 'datetime.time' has no len()

请帮忙。

原文由 Neil 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 259
2 个回答

这是一种粗糙的方法,这里的主要问题是缺少对 time 对象的矢量化支持,因此您首先需要将 time 转换为 datetime 通过使用 combine 然后应用偏移量并获取 time 组件:

 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

原文由 EdChum 发布,翻译遵循 CC BY-SA 3.0 许可协议

从“0.25.3”开始,这就像

df[column] = df[column] + pd.Timedelta(hours=1)

原文由 Tom Wattley 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题