如何在Pandas中将HHMMSS格式整数转为可提取.time()的时间类型?
解决Pandas中整数格式HHMMSS转datetime.time类型的问题
针对3500万行的大数据集,优先选择向量化操作避免逐行处理的性能损耗,以下两种高效方案可供选择:
方法1:字符串补零+时间解析(简洁直观)
先将整数转为固定6位的字符串(自动补前导零),再用Pandas的时间解析函数转换,最后提取time()部分:
# 把整数转为6位字符串,补全前导零 df['Time_str'] = df['Time'].astype(str).str.zfill(6) # 按HHMMSS格式解析为datetime,提取time对象 df['Time_dt'] = pd.to_datetime(df['Time_str'], format='%H%M%S').dt.time
方法2:数值计算拆分时分秒(性能更优)
通过数学运算直接拆分时、分、秒,再构造datetime对象,纯数值操作的速度更快,适合超大规模数据集:
# 拆分小时、分钟、秒字段 df['hour'] = df['Time'] // 10000 df['minute'] = (df['Time'] % 10000) // 100 df['second'] = df['Time'] % 100 # 利用拆分后的字段构造datetime,提取time部分 df['Time_dt'] = pd.to_datetime(df[['hour', 'minute', 'second']]).dt.time # 清理中间列节省内存 df = df.drop(['hour', 'minute', 'second'], axis=1)
效果验证
转换后,整数90000会变为datetime.time(9, 0)(上午9点),100000变为datetime.time(10, 0)(上午10点),后续可直接基于Time_dt列按自定义间隔(小时/分钟/秒)进行统计分析。
内容的提问来源于stack exchange,提问作者James MacKinnon
相关产品推荐
相关产品推荐

