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

Python中DataFrame的hhmmss格式时间转秒报错解决方法

解决无分隔符hhmmss格式时间转秒数的问题

错误原因

你的报错是因为TIME列里存在不足6位的数值(比如4),而%H%M%S格式要求必须是6位的时分秒字符串(如000004),格式不匹配导致转换失败。

解决方案

方法1:直接通过字符串切片计算秒数(高效简洁)

先把TIME列转为字符串并补全6位(前面补0),再通过切片提取时、分、秒计算总秒数:

import pandas as pd
import matplotlib.pyplot as plt

# 注意:用sep='\s+'处理多空格分隔的情况,避免生成多余空列
data = pd.read_csv("你的数据文件名.csv", sep='\s+')

# 将TIME转为字符串,补全为6位(例如数字4转为'000004')
data['TIME_str'] = data['TIME'].astype(str).str.zfill(6)

# 切片提取时、分、秒并计算总秒数
data['secs'] = (data['TIME_str'].str[:2].astype(int) * 3600 +
                data['TIME_str'].str[2:4].astype(int) * 60 +
                data['TIME_str'].str[4:6].astype(int))

# 绘图
plt.plot(data['secs'], data['X'])
plt.show()

方法2:补全格式后用datetime转换

如果偏好使用datetime类处理,先补全6位字符串再进行转换:

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv("你的数据文件名.csv", sep='\s+')

# 补全为6位时分秒字符串
data['TIME_str'] = data['TIME'].astype(str).str.zfill(6)

# 转为datetime格式
data['TIME'] = pd.to_datetime(data['TIME_str'], format='%H%M%S')

# 计算总秒数
data['secs'] = data['TIME'].dt.hour * 3600 + data['TIME'].dt.minute * 60 + data['TIME'].dt.second

# 绘图
plt.plot(data['secs'], data['X'])
plt.show()

额外提示

  • 如果TIME列原本就是字符串类型(不是数值),可以跳过astype(str)步骤,直接用str.zfill(6)补全。
  • 原代码中sep=" "会因数据内的多空格生成多余空列,改用sep='\s+'能匹配任意数量的空白字符,更适配这类数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:02:11