Pandas匹配name列相同值并拼接对应Path列内容生成新列方案
Pandas 同列重复值对应内容拼接解决方案
你需要的功能可以通过Pandas分组聚合逻辑直接实现,无需自行编写循环判断,实现代码如下:
import pandas as pd # 构造测试数据 data_dict = {'name':["Chimney", "Chimney", "Columbia", "Washington","Washington","Washington"], 'Path': ["Path1", "Path2", "Path3", "Path 4", "Path 5", "Path 6"]} df = pd.DataFrame(data_dict) # 核心逻辑:按name列分组,对同组的Path字段做逗号拼接 result = df.groupby('name', as_index=False)['Path'].agg(Append_Path=', '.join) # 若需要保留原数据集首次出现对应name的索引,补充以下代码即可 result = result.set_index(df.drop_duplicates('name').index).sort_index()
原代码问题说明
你之前的循环逻辑存在三个明显问题:
- 索引越界风险:循环中
n最终会累加到等于数据集行数,n+1会超出DataFrame的索引范围 - 全列覆盖错误:每次符合条件时对
df["Append_Path"]直接赋值,会覆盖整列的历史值,最终仅保留最后一次匹配结果 - 不支持多重复值:逻辑仅能处理2个重复值的场景,3个及以上重复值的拼接需求无法实现
内容的提问来源于stack exchange,提问作者Phil Shutler
相关产品推荐
相关产品推荐

