如何用Pandas将Excel中5-6位数字转为仅含时间的00:00:00格式
解决方案:将5-6位数字转换为HH:MM:SS格式时间
正确代码实现
# 处理时间列:将数字转为6位字符串(补前导0),再解析为时间格式 autoLog['TIME'] = autoLog['TIME'].astype(str).str.zfill(6) autoLog['TIME'] = pd.to_datetime(autoLog['TIME'], format='%H%M%S').dt.time # 已成功的日期列代码可保留 autoLog['DATE'] = pd.to_datetime(autoLog['DATE'], format='%Y%m%d', infer_datetime_format=True) autoLog['DATE'] = autoLog['DATE'].dt.date
为什么之前的尝试失败?
- 第一种方案报错:
pd.to_datetime指定format='%H:%M:%S'时,要求输入是带冒号的时间字符串(如10:59:27),但你的输入是无冒号的数字(如22254),格式完全不匹配,因此触发匹配错误。 - 第二种方案结果错误:
pd.to_timedelta指定unit='s'会把数字当成秒数解析,但你的数字实际是HHMMSS格式的编码(如105927代表10时59分27秒),并非秒数,因此得到的结果和预期完全不符。 - 第三种方案结果错误:未指定正确的
format参数时,pd.to_datetime会默认将数字解析为Unix时间戳(从1970-01-01 00:00:00开始的秒数),而你的数字远小于一天的秒数(86400),因此全部显示为1970年初始时间。
说明
str.zfill(6)会自动给5位数字补前导0(如22254转为022254),统一为6位的HHMMSS格式,确保解析逻辑一致。.dt.time会提取纯粹的时间部分,不会包含日期,满足你“仅保留时间、日期与时间列不合并”的需求。
内容的提问来源于stack exchange,提问作者mrawesome0238
相关产品推荐
相关产品推荐

