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

Pandas中Split函数匹配失败返回NaN问题及期望输出实现

Pandas字符串拆分:解决非匹配模式返回NaN的问题

问题根源

你写的代码里,str.contains('.')的.是正则表达式的通配符,会匹配任意单个字符——这意味着所有字符串都会被判定为符合条件,不含.的行也会执行str.split('.',1).str[1],而拆分后没有第二个元素,自然返回NaN。

解决方案

方法1:修正匹配规则

把.当作普通字符串匹配,有两种实现方式:

  • 转义正则特殊字符:
df['Extr_Attr'] = np.where(df.Attr.str.contains('\.'), df['Attr'].str.split('\.',1).str[1], df.Attr)
  • 关闭正则模式:
df['Extr_Attr'] = np.where(df.Attr.str.contains('.', regex=False), df['Attr'].str.split('.',1).str[1], df.Attr)

方法2:拆分后填充NaN

直接拆分并提取第二部分,用原列值填充NaN,写法更简洁:

df['Extr_Attr'] = df['Attr'].str.split('.', 1, expand=True)[1].fillna(df['Attr'])

最终效果

运行后得到符合预期的结果:

AttrExtr_Attr
[ABC].[xyz][xyz]
CDECDE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:35:25