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

如何在Python中将CSV中整数格式的时间转换为datetime类型

解决方案

针对你将整数类型的HHMMSS格式时间转换为datetime类型的需求,以下是两种高效的矢量化方法(适配25万条数据的规模):

方法1:字符串矢量化转换 + 日期解析

先将整数转换为6位补零字符串,再用pd.to_datetime按%H%M%S格式解析:

import pandas as pd

# 读取CSV后处理
df_NPA_2020['TIME_str'] = df_NPA_2020['TIME'].astype(str).str.zfill(6)
# 转换为datetime类型(默认带1900-01-01日期),若只需时间部分可加.dt.time
df_NPA_2020['ch_time'] = pd.to_datetime(df_NPA_2020['TIME_str'], format='%H%M%S')

方法2:数学运算拆分时间分量 + 构造datetime

通过整数运算直接拆分小时、分钟、秒,再构造datetime:

import pandas as pd

df_NPA_2020['hours'] = df_NPA_2020['TIME'] // 10000
df_NPA_2020['minutes'] = (df_NPA_2020['TIME'] // 100) % 100
df_NPA_2020['seconds'] = df_NPA_2020['TIME'] % 100
# 从时间分量构造datetime
df_NPA_2020['ch_time'] = pd.to_datetime(df_NPA_2020[['hours', 'minutes', 'seconds']])

你之前方法的错误原因

  1. 第一种方法错误:
    直接对整个Series执行str(int(df_NPA_2020['TIME']))会把整个列转换成一个包含索引的字符串(而非逐元素转换),后续的zfill和切片操作完全不符合预期。必须用pandas的矢量化字符串方法astype(str).str.zfill(6)逐元素处理。

  2. 第二种方法错误:
    pd.to_datetime(str(x), format='%H:%M:%S')中,str(x)生成的是短字符串(如"7"),不符合%H:%M:%S的格式要求。正确的做法是用%H%M%S格式,并确保输入是6位补零字符串(如"000007")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:05:38