Pandas将DataFrame中Object类型时间列转换为时间格式用于绘图
解决DataFrame时间列转换后仍为object类型的问题
你遇到的问题根源是dt.strftime('%H:%M:%S')把转换后的datetime对象又转回了字符串,导致列类型回到object。如果要用于绘图,必须保留datetime类型而非字符串类型。
正确的转换方法
直接用pd.to_datetime完成转换,不要额外调用strftime:
import pandas as pd df = pd.DataFrame({ "time":["12:30:31.320"] }) # 转换为datetime类型,保留时间格式的数值型数据 df['time'] = pd.to_datetime(df['time'], format='%H:%M:%S.%f') print(df['time'].dtype) # 输出:datetime64[ns]
为什么这样做?
datetime类型是pandas和绘图库(如matplotlib、seaborn)原生支持的时间格式,能自动处理时间轴的刻度、排序等逻辑,完全适配时间序列绘图需求。
如果需要显示不带毫秒的格式
如果只是查看数据时想隐藏毫秒,但不想改变列的实际类型,可以用样式格式化,不修改原始数据:
# 仅设置显示格式,不改变列的datetime类型 display(df.style.format({'time': lambda x: x.strftime('%H:%M:%S')}))
内容的提问来源于stack exchange,提问作者Nelab
相关产品推荐
相关产品推荐

