Python:如何从DataFrame的datetime.time类型列提取小时?
解决Pandas中datetime.time类型列无法使用.dt.hour的问题
嘿,这个错误我太熟悉了!你碰到的AttributeError是因为Pandas的.dt访问器只支持完整的datetime64[ns]类型数据,而你的TICKET_TIME列是datetime.time类型(只有时间部分,没有关联日期),所以没法用.dt来提取小时。
下面给你两种简单靠谱的解决方法:
方法1:直接访问time对象的hour属性(最直接高效)
TICKET_TIME里的每个元素都是datetime.time对象,它本身就自带hour属性,我们可以用apply直接提取:
import pandas as pd # 假设你的DataFrame是df df['HOUR'] = df['TICKET_TIME'].apply(lambda x: x.hour)
运行后你就能得到对应时间的小时数,比如18、19、10这类数值。
方法2:转换为完整datetime类型后提取
如果后续还需要用到完整的日期时间信息,可以把TRADE_DATE和TICKET_TIME合并成完整的datetime64类型列,再用.dt.hour:
# 合并日期与时间字符串,转换为datetime类型 df['full_datetime'] = pd.to_datetime(df['TRADE_DATE'].astype(str) + ' ' + df['TICKET_TIME'].astype(str)) # 提取小时 df['HOUR'] = df['full_datetime'].dt.hour
这样不仅得到了小时列,还多了一个完整的日期时间列,方便后续其他时间相关的操作。
内容的提问来源于stack exchange,提问作者RottenIvy
相关产品推荐
相关产品推荐

