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

Pandas按列值拆分CSV分段文件时邮箱分类结果异常排查

问题排查结论

你的代码有两处核心逻辑错误,导致分类完全失效:

  • 匹配逻辑错误:data['Email-Domain'] == str(domains)是把整个域名列表强行转成一整段字符串(格式类似"['gmail.com', 'att.com', 'netzero.net'...]"),没有任何一个单元格的单独域名值会等于这整段文本,因此个人邮箱的匹配结果必然为空。
  • 语法错误:Python中不存在!==这个不等于运算符,正确写法是!=;就算修正运算符,和上面一样拿单元格值和整个列表转成的长字符串对比,结果永远为真,因此企业邮箱会返回全部数据。
修正后的可运行代码
import pandas as pd

# 读取源CSV文件,注意替换为你本地的实际文件路径
data = pd.read_csv("C:\\Users\\Path\\to\\file\\5.csv")  

# 个人公共邮箱域名清单
personal_domains = [
    'gmail.com', 'att.com', 'netzero.net', 'msn.com', 'yahoo.com',
    'aol.com', 'bellsouth.net', 'hotmail.com', 'comcast.net', 'mail.com',
    'verizon.net', 'ymail.com', 'live.com', 'netscape.net', 'icloud.com',
    'cableone.net', 'alltel.net', 'worldnet.att.com', 'centurytel.net',
    'earthlink.net', 'adelphia.com', 'alltell.net'
]

# 逐行匹配邮箱域名是否在个人域名清单中,筛选个人邮箱数据
individual = data.loc[data['Email-Domain'].isin(personal_domains)]
# 对匹配结果取反,得到企业邮箱数据
business = data.loc[~data['Email-Domain'].isin(personal_domains)]

# 控制台打印结果做校验
print(f"个人邮箱共{len(individual)}条:")
print(individual[['First_Name_01','Last_Name_01','Email']])
print(f"\n企业邮箱共{len(business)}条:")
print(business[['First_Name_01','Last_Name_01','Email']])

# 保存拆分后的两个分段CSV文件
individual.to_csv("个人邮箱列表.csv", index=False, encoding='utf-8-sig')
business.to_csv("企业邮箱列表.csv", index=False, encoding='utf-8-sig')
关键说明
  • pandas中判断某列的值是否存在于给定列表内,必须使用Series.isin(列表)方法,不能直接用==和整个列表做等值比较。
  • 对pandas的布尔型筛选条件取反,要使用~运算符,不能用Python原生的not关键字;多条件组合筛选时每个独立条件需要用括号包裹。
  • 保存CSV时添加index=False参数可以避免写入pandas自动生成的行号列,encoding='utf-8-sig'可以避免输出文件用Excel打开时出现中文乱码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:57:24