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

如何优化pandas中挪威D号、S号格式日期转标准日期的实现

挪威D号/S号日期编码转换高效实现方案

核心优化思路

  • 抛弃逐行循环逻辑,全部使用pandas内置的向量化操作,数据量越大执行效率优势越明显,相比循环方案提升可达数十至上百倍
  • 用str.zfill(6)直接统一补全前导零到6位,无需手动判断字符串长度
  • 用布尔掩码批量命中符合D号、S号规则的记录,统一做编码转换

代码实现

import pandas as pd

def convert_dates(s):
    # 统一转字符串并补全前导零到6位
    s_str = s.astype(str).str.zfill(6)
    # 处理D号规则:第一位数字>3时减4
    first_digit = s_str.str.get(0).astype(int)
    d_mask = first_digit > 3
    s_str = s_str.mask(d_mask, (first_digit[d_mask] - 4).astype(str) + s_str.str[1:])
    # 处理S号规则:第三位数字>1时减5
    third_digit = s_str.str.get(2).astype(int)
    s_mask = third_digit > 1
    s_str = s_str.mask(s_mask, s_str.str[:2] + (third_digit[s_mask] - 5).astype(str) + s_str.str[3:])
    return s_str

效果验证

使用示例数据测试:

df = pd.DataFrame({'dates': [241290, 710586, 105299, 56187]})
df['converted'] = convert_dates(df['dates'])

输出结果:

datesconverted对应标准日期
24129024129024.12.90
71058631058631.05.86
10529910029910.02.99
5618705118705.11.87

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:45:03