使用groupby合并TransactionId重复行触发cannot reindex from a duplicate axis错误
解决groupby聚合时的"cannot reindex from a duplicate axis"错误
问题根源
你的DataFrame存在重复列名(示例中可见两个Others列),使用agg(' '.join)后会生成重复列名,执行reset_index()时触发索引重排错误。
解决步骤
1. 重命名重复列
给重复列添加唯一后缀,避免列名冲突:
# 遍历列名,为重复列生成唯一名称 cols = [] col_counts = {} for col in ldf_object_page_data.columns: if col in col_counts: col_counts[col] += 1 cols.append(f"{col}{col_counts[col]}") else: col_counts[col] = 1 cols.append(col) # 替换原DataFrame的列名 ldf_object_page_data.columns = cols
2. 执行聚合操作
列名修复后,再运行你的groupby代码:
# 确保columns是你需要聚合的列列表(已无重复) result_df = ldf_object_page_data.groupby('TransactionId')[columns].agg(' '.join).reset_index()
备选方案:删除冗余重复列
如果重复列是无效数据,可直接保留每个重复列的第一个实例:
# 移除重复列,仅保留首次出现的列 ldf_object_page_data = ldf_object_page_data.loc[:, ~ldf_object_page_data.columns.duplicated()] # 执行聚合 result_df = ldf_object_page_data.groupby('TransactionId')[columns].agg(' '.join).reset_index()
内容的提问来源于stack exchange,提问作者donny
相关产品推荐
相关产品推荐

