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

Pandas DataFrame列值替换问题:处理riskID中字符后含数字/特殊字符场景

解决DataFrame中riskID列值替换问题

问题分析

现有代码的核心问题是筛选条件m2错误限制了需要处理的行:仅判断riskID包含-或_才执行替换,但像70317380CH71(数字后接字符+数字)、70317380CH&?(数字后接特殊字符)这类不包含-/_的行,无法被选中处理,导致输出不符合预期。

解决方案

去掉不必要的m2筛选条件,直接对所有locationCity和locationCountryCode均不为空的行执行替换操作。修改后的代码如下:

# 筛选城市和国家编码都不为空的行
m1 = new_df[['locationCity', 'locationCountryCode']].notna().all(axis=1)

# 替换符合条件的riskID:提取开头连续数字 + 去空格的城市名 + 国家编码
new_df.loc[m1, 'riskID'] = (
    new_df.loc[m1, 'riskID'].str.extract('^(\d+)', expand=False)
    + new_df.loc[m1, 'locationCity'].str.replace(' ', '')
    + new_df.loc[m1, 'locationCountryCode']
)

代码说明

  1. 筛选逻辑:仅保留locationCity和locationCountryCode都有值的行,确保替换时有完整的拼接数据源。
  2. 数字提取:str.extract('^(\d+)')可以精准提取riskID开头的连续数字,无论后续是字母、数字还是特殊字符都不受影响。
  3. 字符串拼接:将提取的数字、去空格的城市名、国家编码拼接,得到预期的riskID格式。

效果验证

  • 原riskID为70317380CH71的行,处理后变为70317380PRATTELNCH
  • 原riskID为70317380CH&?的行,处理后变为70317380GALECH
  • 原本已符合格式的行(如70520366HONGKONGHK)替换后结果保持不变,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:15:55