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

使用Pandas合并重复联系人行:唯一值以&拼接的实现问题

解决方案:Pandas 合并重复联系人数据并生成邮件列表CSV

核心思路

  1. 确定分组依据:以联系人的唯一标识字段(Last Name、Contact First Name、Contact Last Name、Email)作为分组键,确保只有属于同一联系人的行才会被合并。
  2. 自定义聚合逻辑:对需要合并的字段(First Name、Preferred Name、Type、ID),如果组内所有值相同则直接保留原值;如果存在不同值,则用&拼接唯一值(自动去重,避免重复内容)。

完整代码实现

import pandas as pd

# 1. 加载/创建原始数据(替换为你的XLS文件路径:pd.read_excel("your_exported_data.xls"))
data = [
    ["TMart", "Bob", "Bob", "TypeA", 22, "Sully", "TMart", "sullyt@email.com"],
    ["TMart", "Jannet", "Jan", "TypeB", 23, "Sully", "TMart", "sullyt@email.com"],
    # 新增Type相同的测试用例,验证不重复拼接逻辑
    ["Smith", "Alice", "Ali", "TypeC", 45, "John", "Smith", "johns@email.com"],
    ["Smith", "Anna", "Annie", "TypeC", 46, "John", "Smith", "johns@email.com"]
]

df = pd.DataFrame(
    data,
    columns=["Last Name", "First Name", "Preferred Name", "Type", "ID", "Contact First Name", "Contact Last Name", "Email"]
)

# 2. 定义自定义聚合函数
def aggregate_unique_values(series):
    unique_vals = series.unique()
    if len(unique_vals) == 1:
        return unique_vals[0]
    # 对数字类型字段自动转字符串后拼接
    return " & ".join(map(str, unique_vals))

# 3. 执行分组聚合
group_keys = ["Last Name", "Contact First Name", "Contact Last Name", "Email"]
agg_config = {
    "First Name": aggregate_unique_values,
    "Preferred Name": aggregate_unique_values,
    "Type": aggregate_unique_values,
    "ID": aggregate_unique_values
}

merged_df = df.groupby(group_keys, as_index=False).agg(agg_config)

# 4. 生成三个邮件列表CSV(示例按Type拆分,可根据实际需求调整筛选逻辑)
# 假设三个列表对应TypeA、TypeB、TypeC
for list_type in ["TypeA", "TypeB", "TypeC"]:
    # 筛选对应类型的联系人
    list_df = merged_df[merged_df["Type"].str.contains(list_type)]
    # 保存为CSV(不含索引列)
    list_df.to_csv(f"mailing_list_{list_type}.csv", index=False)

关键细节说明

  • 解决多列合并问题:使用agg()方法可以针对不同列单独配置聚合逻辑,避免了单列apply()无法批量处理的问题。
  • 自动处理值重复场景:自定义函数会先判断组内值是否唯一,相同值直接保留,无需多余拼接。
  • 兼容数字类型字段:通过map(str, unique_vals)将ID等数字类型转为字符串,确保拼接格式统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 08:15:40