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

如何将DataFrame长数字按位置拆分转换为天时分秒日期格式

Pandas 固定位置拆分字符串列转标准时间实现方案

以下操作全部基于pandas向量化字符串接口实现,无手写循环,执行效率高,适配你当前10行75列的数据集规模。

1. 访问目标列

DataFrame列位置索引从0开始计数,第三列对应的位置索引为2,可直接通过位置索引访问整列,无需依赖列名:

# 取所有行、第3列的全部数据
col_data = df.iloc[:, 2]

前置校验:如果列数据读入时被识别为整数类型,先统一转为10位长度字符串,避免前导零丢失导致切片错位:

col_data = col_data.astype(str).str.zfill(10)

2. 固定位置拆分字段

Python字符串切片规则为「左闭右开」,直接按字符位置截取即可得到对应字段:

  • 天数字段(前4位,对应示例值0123):col_data.str[0:4]
  • 小时字段(第5-6位,对应示例值45):col_data.str[4:6]
  • 分钟字段(第7-8位,对应示例值67):col_data.str[6:8]
  • 秒数字段(第9-10位,对应示例值89):col_data.str[8:10]
    拆分后将各字段转为整数类型,方便后续时间计算。

3. 转换为标准日期时间格式

这类定长数字串记录的时间,一般是以1970-01-01 00:00:00为基准的累计时间偏移,直接通过时间增量累加即可得到标准datetime格式,自动处理超量程时间值(比如示例中45小时、67分钟这类超出常规时分范围的值会自动进位),避免手动拼接字符串带来的格式错误:

import pandas as pd

# 拆分并转换字段类型
d = col_data.str[0:4].astype(int)
h = col_data.str[4:6].astype(int)
m = col_data.str[6:8].astype(int)
s = col_data.str[8:10].astype(int)

# 累加时间偏移得到标准时间
df['标准时间'] = pd.Timestamp("1970-01-01") \
              + pd.to_timedelta(d, unit="d") \
              + pd.to_timedelta(h, unit="h") \
              + pd.to_timedelta(m, unit="m") \
              + pd.to_timedelta(s, unit="s")

# 若需要输出为指定格式的字符串时间,可取消下方注释调整格式
# df['标准时间'] = df['标准时间'].dt.strftime("%Y-%m-%d %H:%M:%S")

示例验证

用你给出的样例值0123456789测试:拆分得到天数=123、小时=45、分钟=67、秒=89,代码自动完成时间进位计算后,可得到符合格式要求的标准时间结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:15:44