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

如何使用Pandas拆分CSV单元格内xxxxyyzzss格式时间值至多列

固定长度编码时间串拆分方案

问题说明

CSV文件第一列、第三列存储10位数字格式的时间编码,结构为xxxxyyzzss:

  • 前4位xxxx:天数
  • 第5-6位yy:小时数
  • 第7-8位zz:分钟数
  • 第9-10位ss:秒数
    所有时间信息存储在单个单元格中,需要拆分到独立单元格,已完成CSV文件的pandas读入基础代码。

实现代码

核心逻辑是将时间值统一转为固定长度字符串后按位切片,不需要额外依赖numpy、math库,代码可直接运行:

import pandas as pd

df = pd.read_csv('SensorsAP_example.csv')

def split_time_code(time_val):
    # 统一转为10位字符串,避免前导0丢失导致切片错位
    time_str = str(int(time_val)).zfill(10)
    # 按固定位置截取各时间分量
    days = int(time_str[:4])
    hours = int(time_str[4:6])
    minutes = int(time_str[6:8])
    seconds = int(time_str[8:10])
    return days, hours, minutes, seconds

# 拆分第一列时间值,生成4个独立列
first_col = df.columns[0]
df[[f"{first_col}_天", f"{first_col}_时", f"{first_col}_分", f"{first_col}_秒"]] = df[first_col].apply(
    lambda x: pd.Series(split_time_code(x))
)

# 拆分第三列时间值,生成4个独立列
third_col = df.columns[2]
df[[f"{third_col}_天", f"{third_col}_时", f"{third_col}_分", f"{third_col}_秒"]] = df[third_col].apply(
    lambda x: pd.Series(split_time_code(x))
)

# 打印拆分结果校验
print(df)

# 结果导出为新CSV(按需开启)
# df.to_csv('SensorsAP_split_result.csv', index=False)

注意事项

  • 如果原始时间值本身是字符串格式,可去掉int()转换步骤,直接调用zfill(10)补位即可
  • 拆分后的列名可根据需求自定义,不需要保留原列名前缀
  • 如果不需要保留原始的完整时间编码列,拆分完成后可调用df.drop(columns=[first_col, third_col])删除原列
  • 如果需要把时间分量转为标准时间格式,可以基于拆分出的天、时、分、秒值做进一步换算,比如按起始基准日期加天数偏移

内容的提问来源于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 15:39:26