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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:06:17