如何从pandas DataFrame的unix时间戳字段中仅提取时间部分
问题解决方法
你遇到的AttributeError报错原因是:pd.to_datetime(df['time'], unit='s')返回的是pandas的Series对象,time()是单个Timestamp类的实例方法,无法直接在Series上调用,需要通过Series自带的.dt访问器调用时间相关方法。
正确实现方式
分两种常用场景按需选择:
- 场景1:需要得到Python原生
datetime.time类型的时间部分
直接调用.dt.time即可:df['time_part'] = pd.to_datetime(df['time'], unit='s').dt.time - 场景2:需要得到
HH:MM:SS.sss格式的字符串(和你示例需求一致)
因为strftime的%f参数会输出6位微秒,通过字符串切片截取去掉末尾3位即可得到3位毫秒的时间格式:df['time_part'] = pd.to_datetime(df['time'], unit='s').dt.strftime('%H:%M:%S.%f').str[:-3]
测试验证
import pandas as pd # 构造和你示例一致的测试数据 df = pd.DataFrame({'time': [1630236142.942]}) # 执行转换 df['time_part'] = pd.to_datetime(df['time'], unit='s').dt.strftime('%H:%M:%S.%f').str[:-3] print(df['time_part'].iloc[0]) # 输出结果:11:22:22.942
内容的提问来源于stack exchange,提问作者user1977050
相关产品推荐
相关产品推荐

