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

Pandas DataFrame新增第二单引号时无引号行变为NaN如何解决

问题根因

你原来的代码只筛选出了包含单引号的行做替换处理,再将这部分仅包含匹配行的结果赋值给整个email_address列,未被筛选匹配的行没有对应值,自然会被填充为NaN。

最优解决方案

其实不需要提前筛选包含单引号的行,Series.str.replace()本身只会替换字符串中存在的匹配字符,没有匹配内容的字符串会原封不动返回,直接对全列做替换即可:

# 空值会统一转为空字符串
df['email_address'] = df['email_address'].fillna('').str.replace("'", "''")

如果需要保留原始的空值(不需要把NaN转成空字符串),可以调整为:

# 空值直接保留不做处理
df['email_address'] = df['email_address'].str.replace("'", "''", na_action='ignore')

可选条件处理方案

如果确实需要按条件分支处理,可以用np.where实现,避免未匹配行出现NaN:

import numpy as np
df['email_address'] = np.where(
    df['email_address'].fillna('').str.contains("'"),
    df['email_address'].str.replace("'", "''"),
    df['email_address']
)

处理后的结果示例:

Nameemail_address
AJARED.O''CALLAGHAN@CBS.COM
BZACK.O''LEARY@ABC.COM
CALEX.SMITH@NBC.COM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:45:02