Python去重excel表并合并重复项的指定列

# 根据“客户名称”分组,然后对每一组数据进行处理
for _, group in df2[df2['客户名称'].notnull()].groupby(df2['客户名称'].str.lower()):

这行代码首先通过df2['客户名称'].notnull()条件筛选出不为空的行,然后使用groupby函数按照"客户名称"列进行分组。循环迭代每一个分组时,group变量表示当前分组的数据。

# 将重复行的"产品中文名称"合并到第一行内
    group["产品名字"] = group["产品名字"].apply(lambda x: x if isinstance(x, str) else "")
    group.loc[:, "产品名字"] = group["产品名字"].str.cat(sep=";")

将每个分组内的重复行的"产品名字"列合并到第一行内。首先,通过apply()函数和lambda表达式将"产品名字"列中的非字符串值(如NaN)替换为空字符串。然后,使用str.cat()函数将"产品名字"列中的多个值以分号分隔连接在一起,并赋值给第一行。

 # 去重
    df_unique = group.drop_duplicates(subset=["客户名称"], keep='first')
    df_duplicate = group.drop(df_unique.index)

对分组内的数据进行去重操作。使用drop_duplicates()函数可以去除"客户名称"列的重复行,保留第一次出现的行,并将结果赋值给df_unique变量。然后,从原始分组数据中删除df_unique变量中包含的行,得到重复的行,并将结果赋值给df_duplicate变量。

  # 将处理后的数据赋值回原始数据
    df2.loc[df_unique.index] = df_unique
    df2.drop(df_duplicate.index, inplace=True)

最后,通过使用loc属性和index将处理后的去重数据df_unique赋值回原始数据df2。同时,使用drop()函数删除原始数据中的重复行df_duplicate

你可能感兴趣的:(excel,python)