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

DataFrame结合正则实现if then else逻辑修复混乱通讯录数据问题

混乱通讯录字段错位修复方案

核心问题根因

你编写的np.where逻辑不生效,根本原因是:Pandas 中str.extract匹配失败返回的空值是NaN(缺失值类型),不是字符串'nan',你用== 'nan'做判断条件永远不会命中,所以替换逻辑无法执行。

修复方案

方案1:使用Pandas原生fillna方法(更简洁)

fillna是Pandas专门用来填充空值的方法,一行代码即可实现需求:

df['Name_tmp'] = df['Name_tmp'].fillna(df['Name'])

方案2:调整np.where的判断条件(保留原写法)

如果要继续用np.where,把判断条件换成专门的空值判断函数即可:

df['Name_tmp'] = np.where(pd.isna(df['Name_tmp']), df['Name'], df['Name_tmp'])

额外优化建议

你现有代码还有两处容易出错的地方,可以同步调整:

  • 正则表达式没有转义括号:正则中()是分组符,要匹配文本里的括号需要加转义符\,修正后的正则参考:
    • 提取括号前的名称:r'([^\(]+)\(.*'
    • 提取括号内的公司内容:r'.*\(([^\)]+)\).*'
  • 多字段拼接前先把空值替换为空字符串,避免拼接结果出现nan字符串:
cols_to_merge = ['Name', 'SecondName', 'Surname', 'Company']
df['Nameall_tmp'] = df[cols_to_merge].fillna('').agg(' '.join, axis=1).str.strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:48:02