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

如何将Pandas DataFrame中的5位数字编码转换为标准日期时间格式?

解决方案

要将这类5位编码转换为标准datetime格式,我们可以分日期偏移解析和时段解析两步处理,结合Pandas的时间操作函数快速实现:

核心规则拆解

  • 前3位数字:代表相对于某基准日的天数偏移量(从示例反推基准日为2008-06-20,可根据实际数据调整)
  • 后2位数字:每30分钟一个时段,奇数对应小时前30分钟(0分),偶数对应小时后30分钟(30分);小时数计算公式为(时段编码-1)//2

代码实现

import pandas as pd
import numpy as np

# 示例数据
df = pd.DataFrame({'code': [19501, 19502, 19711, 73048]})

# 1. 拆分编码为日期偏移和时段
df['date_offset'] = df['code'] // 100
df['period'] = df['code'] % 100

# 2. 解析日期:基准日 + 偏移天数
base_date = pd.to_datetime('2008-06-20')
df['date_part'] = base_date + pd.to_timedelta(df['date_offset'], unit='D')

# 3. 解析时段:计算小时和分钟
df['hour'] = (df['period'] - 1) // 2
df['minute'] = np.where(df['period'] % 2 == 1, 0, 30)

# 4. 合并为标准datetime格式
df['datetime'] = df['date_part'] + pd.to_timedelta(df['hour'], unit='h') + pd.to_timedelta(df['minute'], unit='m')

# 可选:清理中间临时列
df = df.drop(['date_offset', 'period', 'date_part', 'hour', 'minute'], axis=1)

验证结果

执行后示例编码对应的datetime结果:

codedatetime
195012009-01-01 00:00:00
195022009-01-01 00:30:00
197112009-01-03 05:00:00
730482010-06-19 23:30:00

注:若示例4预期为2010-06-20 23:30:00,只需将基准日调整为2008-06-19,完全适配实际数据的起始规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:00:59