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

Pandas按行替换DataFrame邮箱格式占位符的代码实现方法

Pandas 邮箱前缀批量替换实现方案

实现思路

你的三个邮箱格式列分别对应固定的前缀规则,直接通过按行应用自定义函数的方式实现即可:提取每行的firstName、lastName、Domain字段,按规则生成对应邮箱直接覆盖原列即可。如果需要兼容原列存在非规则前缀的场景,可以增加前缀校验逻辑,不匹配规则的内容保留原值。

高效实现(确定三列分别对应三个规则时使用)

该方案不需要拆分原邮箱内容,执行效率更高:

import pandas as pd

# 构造示例DataFrame,你实际使用时可以替换为读取自己的数据
df = pd.DataFrame({
    'fullName': ['Olamide A.'],
    'firstName': ['Olamide'],
    'lastName': ['A'],
    'companyName': ['Wells Fargo'],
    'Domain': ['wellsfargo.com'],
    'Email Format 1': ['jane.doe@wellsfargo.com'],
    'Email Format 2': ['jane@wellsfargo.com'],
    'Email Format 3': ['jdoe@wellsfargo.com']
})

def generate_emails(row):
    # 邮箱统一转小写,符合通用邮箱命名规范
    first = row['firstName'].lower()
    last = row['lastName'].lower()
    domain = row['Domain'].lower()
    # 按规则生成三个对应格式的邮箱
    return pd.Series(
        [f"{first}.{last}@{domain}", f"{first}@{domain}", f"{first[0]}{last}@{domain}"],
        index=['Email Format 1', 'Email Format 2', 'Email Format 3']
    )

# 按行应用规则,直接覆盖原邮箱列
df[['Email Format 1', 'Email Format 2', 'Email Format 3']] = df.apply(generate_emails, axis=1)

通用实现(需要先校验原邮箱前缀时使用)

如果不确定三列的前缀是否符合规则,需要先匹配前缀再替换,可以用以下方案:

def replace_single_email(email, first_name, last_name, domain):
    original_prefix = email.split('@')[0]
    if original_prefix == 'jane.doe':
        return f"{first_name}.{last_name}@{domain}"
    elif original_prefix == 'jane':
        return f"{first_name}@{domain}"
    elif original_prefix == 'jdoe':
        return f"{first_name[0]}{last_name}@{domain}"
    # 不匹配规则的内容保留原值
    return email

def generate_emails_with_check(row):
    first = row['firstName'].lower()
    last = row['lastName'].lower()
    domain = row['Domain'].lower()
    return pd.Series(
        [
            replace_single_email(row['Email Format 1'], first, last, domain),
            replace_single_email(row['Email Format 2'], first, last, domain),
            replace_single_email(row['Email Format 3'], first, last, domain)
        ],
        index=['Email Format 1', 'Email Format 2', 'Email Format 3']
    )

df[['Email Format 1', 'Email Format 2', 'Email Format 3']] = df.apply(generate_emails_with_check, axis=1)

效果示例

示例中的行处理后,三个邮箱输出为:

  • Email Format 1: olamide.a@wellsfargo.com
  • Email Format 2: olamide@wellsfargo.com
  • Email Format 3: oa@wellsfargo.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 21:15:03