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

如何将DataFrame中的邮箱域名列转换为0/1数值标记列

解决邮箱域名转数值标记的问题

我来帮你搞定这个需求!首先看你已经写了部分转换函数,咱们先把它补全,同时再给你推荐更高效的pandas原生方法——毕竟逐行apply在数据量大的时候效率会低一些,用pandas自带的矢量化操作会快很多。

方法一:完善你的自定义函数

如果坚持用自定义函数的方式,你可以把它补全成这样,逻辑更简洁:

def convertToNumber(row):
    if row['emailDomain'] in ('[gmail]', '[aol]'):
        return 1
    else:
        return 0

# 将函数应用到DataFrame的每一行,生成新列
data['domainFlag'] = data.apply(convertToNumber, axis=1)

方法二:更高效的pandas矢量化操作

推荐用isin配合布尔值转整数的方式,代码更简洁,执行速度也更快:

# 直接判断域名是否在目标集合中,布尔值转int后,True对应1,False对应0
data['domainFlag'] = data['emailDomain'].isin(['[gmail]', '[aol]']).astype(int)

或者用numpy.where实现,逻辑更直观:

import numpy as np

data['domainFlag'] = np.where(data['emailDomain'].isin(['[gmail]', '[aol]']), 1, 0)

额外提醒:如果域名是列表类型

注意到你示例里的emailDomain显示为[gmail],如果这不是字符串而是列表类型(比如每个单元格是['gmail']这样的列表),那得先提取列表里的元素再判断:

# 提取列表中的第一个元素,生成清洗后的域名列
data['clean_domain'] = data['emailDomain'].str[0]
# 再进行标记转换
data['domainFlag'] = data['clean_domain'].isin(['gmail', 'aol']).astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:20:36