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

如何在Pandas中合并近似重复行以缩减数据行数?

问题描述

我有一个Pandas DataFrame,其中部分行包含近似重复的值,希望合并这些行来减少数据行数。

示例输入DataFrame

OneTwoThree
ABC
BBB
CAB

期望输出DataFrame

OneTwoThree
ABCABCB

实际业务样本CSV数据

Column_1,Column_2,Column_3,Column_4,Column_5,Column_6,Column_7,Column_8
A,A,A,A,A,A,A,A
A,A,A,A,A,A,A,B
A,A,A,A,A,A,A,C
A,A,A,A,A,A,B,A
A,A,A,A,A,A,B,B
A,A,A,A,A,A,B,C
A,A,A,A,A,A,C,A
A,A,A,A,A,A,C,B
A,A,A,A,A,A,C,C
C,C,C,C,C,C,A,A
C,C,C,C,C,C,A,B
C,C,C,C,C,C,A,C
C,C,C,C,C,C,B,A
C,C,C,C,C,C,B,B
C,C,C,C,C,C,B,C
C,C,C,C,C,C,C,A
C,C,C,C,C,C,C,B
C,C,C,C,C,C,C,C

期望输出CSV格式

Column_1,Column_2,Column_3,Column_4,Column_5,Column_6,Column_7,Column_8
AC,AC,AC,AC,AC,AC,ABC,ABC

之前写的代码太冗长,想要更简洁自然的解决方案。

简洁解决方案

核心思路是对每一列提取唯一值,排序后拼接成字符串,用Pandas的agg方法可高效实现:

import pandas as pd

# 读取CSV数据
df = pd.read_csv("your_file.csv")

# 对每一列聚合:取唯一值→排序→拼接成字符串
result = df.agg(lambda col: ''.join(sorted(col.unique()))).to_frame().T

# 输出为CSV
result.to_csv("output.csv", index=False)

代码说明

  • col.unique():提取当前列的所有唯一值,自动去重
  • sorted():对唯一值按字母顺序排序,保证输出结果的一致性
  • ''.join():将排序后的唯一值拼接成连续字符串
  • agg(lambda col: ...):对DataFrame的每一列批量应用上述逻辑
  • to_frame().T:将聚合得到的Series转换为行格式的DataFrame,匹配期望输出结构

该方法无需逐列编写冗余代码,适配任意列数和行数的数据集,执行效率高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:05:13