You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas.DataFrame中将object/string类型转为time类型?

解决Pandas时间列类型转换的两个问题

问题1:转成datetime后出现默认日期

用pd.to_datetime()转换纯时间字符串(比如%H:%M:%S格式)时,Pandas的datetime类型本身是日期+时间的组合,所以会自动补一个默认起始日期(通常是1900-01-01),这是正常现象。如果只是需要展示时间、后续不用做时间运算,要么忽略这个日期,要么转成纯字符串格式:

# 转成仅含时间的字符串
d2['Time of Card Posting'] = pd.to_datetime(d2['Time of Card Posting'], format='%H:%M:%S').dt.strftime('%H:%M:%S')

问题2:提取dt.time后变成object类型

dt.time返回的是Python内置的datetime.time对象,Pandas会把这类对象归为object类型,没法用原生时间函数操作。如果需要对时间做运算或筛选,更推荐用Timedelta类型:

# 直接转成时间差类型(表示从00:00:00开始的时长)
d2['Time of Card Posting'] = pd.to_timedelta(d2['Time of Card Posting'])

转成timedelta64类型后,能直接做时间比较、加减等操作,比如筛选10点到12点之间的数据:

# 筛选10:00:00至12:00:00的记录
mask = (d2['Time of Card Posting'] >= pd.to_timedelta('10:00:00')) & (d2['Time of Card Posting'] <= pd.to_timedelta('12:00:00'))
filtered_data = d2[mask]

要是非得保留datetime类型但只关注时间部分,也可以提取时分秒分量来做操作:

# 提取小时、分钟列用于后续分析
d2['Hour'] = pd.to_datetime(d2['Time of Card Posting'], format='%H:%M:%S').dt.hour
d2['Minute'] = pd.to_datetime(d2['Time of Card Posting'], format='%H:%M:%S').dt.minute

内容的提问来源于stack exchange,提问作者tk_1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:35:25