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

Pandas DataFrame日期重格式化 如何在第二个括号后加20修正格式

Pandas日期字符串格式统一实现方法

直接用下面的代码就能实现需求,不需要逐行手写循环,两种方案按需选择即可。

方案1:正则快速替换(推荐,代码最短)

用Pandas内置的向量化字符串正则替换能力,直接定位第二个括号的位置插入'20',运算速度快,适合数据量大的场景。
你可以替换成自己实际的列名直接运行:

import pandas as pd

# 以下为模拟测试数据,实际使用时替换为你自己的DataFrame即可
df = pd.DataFrame({
    'date_col': [
        'Wed 02-Apr-24 (1st) (24)',
        'Fri 13-May-05 (2nd) (05)',
        'Sun 27-Aug-99 (3rd) (99)'
    ]
})

# 严格匹配「第二个右括号后插入'20'」的需求
df['fixed_date'] = df['date_col'].str.replace(
    r'^([^)]*\))([^)]*\))', 
    r'\1\220', 
    regex=True
)

如果你的实际需求是把第二个括号内的两位年份补全为20开头的四位年份(也就是第二个左括号后插入'20',比如(24)变成(2024),是日期格式统一最常见的场景),把替换规则改成下面这行就行:

df['fixed_date'] = df['date_col'].str.replace(
    r'^([^(]*\([^)]*\))\(', 
    r'\1(20', 
    regex=True
)

方案2:位置索引插入(逻辑最直观,不会误匹配)

如果你的日期字符串包含特殊字符、正则容易匹配错误,就用这个按括号位置查找插入的方法,完全按照「定位第二个括号,在指定位置插入'20'」的逻辑执行,适配性更强:

def insert_20(s: str, target_bracket: str = ')', insert_pos: str = 'after') -> str:
    """
    查找指定括号的位置,插入'20'
    :param target_bracket: 要定位的括号,')'为右括号,'('为左括号
    :param insert_pos: 插入位置,'after'为括号后,'before'为括号前
    """
    # 定位第一个括号位置
    first_pos = s.find(target_bracket)
    # 定位第二个括号位置
    second_pos = s.find(target_bracket, first_pos + 1)
    insert_idx = second_pos + 1 if insert_pos == 'after' else second_pos
    return s[:insert_idx] + '20' + s[insert_idx:]

# 应用:第二个右括号后插入'20'
df['fixed_date'] = df['date_col'].apply(insert_20)

# 如果要在第二个左括号后插入(补全四位年份场景),改参数即可
# df['fixed_date'] = df['date_col'].apply(insert_20, target_bracket='(', insert_pos='after')

原始数据参考

原始日期数据截图

处理完直接打印df.head()就能核对结果,不符合预期的话单独调整括号匹配参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:06:26