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

如何使用pandas遍历指定列校验邮箱并清空对应单元格值

问题原因和实现方案

你写的循环无法生效的核心原因是:直接遍历df['first']得到的x是单元格值的拷贝,修改x不会同步改动原DataFrame中的数据。另外仅通过是否包含.com识别邮箱的逻辑误差较大,容易误判正常文本,推荐用正则匹配标准邮箱格式。

推荐实现(向量化操作,性能更高)

不需要写循环,直接用pandas自带的字符串匹配方法即可:

import re
# 标准邮箱格式匹配正则
email_reg = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
# 将匹配到邮箱的单元格置为空
df.loc[df['first'].str.match(email_reg, na=False), 'first'] = ''

循环写法(仅作为逻辑参考)

如果一定要用循环实现,需要通过索引定位修改原DataFrame:

import re
email_reg = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
for idx, value in df['first'].items():
    if re.match(email_reg, str(value)):
        df.loc[idx, 'first'] = ''

如果你的业务场景只需要判断包含.com就置空,可以把匹配逻辑简化为df['first'].str.contains('.com', na=False)即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:24:04