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

如何使用pandas合并两个CSV文件并按Dept列分组排序去重

问题根因

pd.merge()是横向关联合并函数,作用是按共同列匹配两个表的行做SQL式join,和你需要的「上下堆叠两个表的行」的需求完全不匹配,这是结果不符合预期的核心原因。

实现方案

按以下逻辑处理即可得到目标结果:

  • 读入两个CSV文件
  • 分别删除两个表中不需要的Company列
  • 纵向拼接两个表的所有行
  • 清除两个表中重复出现的相同人员记录
  • 按Dept列分组排序后导出文件
可直接运行的代码
import pandas as pd

csvPath1 = 'data1.csv'
csvPath2 = 'data2.csv'
csvDest = 'newdata.csv'

# 读取文件
df1 = pd.read_csv(csvPath1)
df2 = pd.read_csv(csvPath2)

# 删除Company列
df1 = df1.drop('Company', axis=1)
df2 = df2.drop('Company', axis=1)

# 纵向拼接+去重
merged = pd.concat([df1, df2], ignore_index=True).drop_duplicates()

# 按Dept排序,默认按字母序排列分组
merged = merged.sort_values(by='Dept', ignore_index=True)

# 导出文件
merged.to_csv(csvDest, index=False)

补充说明:

  1. 如果读取CSV时发现列名前后带多余空格导致drop列报错,可以在读入后先统一处理列名:
df1.columns = df1.columns.str.strip()
df2.columns = df2.columns.str.strip()
  1. 如果需要和你示例中给出的分组顺序完全一致(candy→wood→clothes→warehouse→kitchen),可以替换排序部分的代码,自定义分组优先级:
dept_order = ['candy', 'wood', 'clothes', 'warehouse', 'kitchen']
merged['Dept'] = pd.Categorical(merged['Dept'], categories=dept_order, ordered=True)
merged = merged.sort_values(by='Dept', ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:45:55