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
相关产品推荐
相关产品推荐

