如何用Python识别CSV重复项并将对应数据整理至对应列
用Python合并CSV重复行的对应数据
我有一个包含重复条目的CSV文件,需要识别重复字段并把对应数据整理到同一行的不同列中。
原CSV表格内容:
| Column A | Column B | Column C | Column D |
|---|---|---|---|
| 1004. | 1 | ||
| 1004. | 3 | ||
| 1004. | 2 |
期望处理后的表格:
| Column A | Column B | Column C | Column D |
|---|---|---|---|
| 1004. | 1 | 3 | 2 |
我已经写出了部分代码,能识别重复项,但不知道后续怎么合并数据,现有代码如下:
import pandas df = pandas.read_csv(csv_file, names=fields, index_col=False) df = df[df.duplicated([column1], keep=False)] df.to_csv(csv_file2, index=False)
你当前的代码仅筛选出了含重复值的行,未完成数据合并的核心操作。可以通过Pandas的分组+聚合方法实现需求,具体代码和步骤如下:
完整实现代码
import pandas as pd # 读取CSV文件,若原始文件无表头,需添加header=None并手动指定列名 df = pd.read_csv("input.csv") # 按Column A分组,将每组的Column B值转为列表后拆分成多列 grouped_data = df.groupby("Column A")["Column B"].apply(list).apply(pd.Series) # 重命名列名,匹配期望的Column B/C/D格式 grouped_data.columns = [f"Column {chr(66 + i)}" for i in range(grouped_data.shape[1])] # 将Column A从索引转回普通列,生成最终结果 result_df = grouped_data.reset_index() # 保存处理后的CSV result_df.to_csv("output.csv", index=False)
代码说明
groupby("Column A")["Column B"].apply(list):把同一Column A对应的所有Column B值收集为列表apply(pd.Series):将列表横向拆分为多列,每个元素对应一列- 列名重命名逻辑用
chr(66+i)自动生成B、C、D等列名,可适配更多重复行的场景 - 若原始CSV无表头,读取时需修改为
df = pd.read_csv("input.csv", header=None),并手动指定列名:df.columns = ["Column A", "Column B", "Column C", "Column D"]
内容的提问来源于stack exchange,提问作者narashimhaa kannan
相关产品推荐
相关产品推荐

