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

按共同列合并两个CSV文件的实现方案(Java/Python均可)

Python实现CSV基于共同列的内连接合并

直接用Python的pandas库就能快速搞定这个需求,它对CSV的合并操作支持很完善。下面是具体实现步骤和代码:

步骤说明

  1. 先确保安装了pandas:
    pip install pandas
    
  2. 编写脚本,通过命令行参数接收三个文件的路径(第一个是first.csv,第二个是second.csv,第三个是输出的third.csv)
  3. 自动识别两个CSV的共同列,基于这些列做内连接(只保留匹配的行)
  4. 按要求的列顺序输出:先保留first.csv的所有列,再追加second.csv中除共同列外的其他列

完整代码

import pandas as pd
import argparse

def merge_csv_files(first_path, second_path, output_path):
    # 读取两个CSV文件
    df1 = pd.read_csv(first_path)
    df2 = pd.read_csv(second_path)
    
    # 找出共同列
    common_cols = list(set(df1.columns) & set(df2.columns))
    if not common_cols:
        raise ValueError("两个CSV文件没有共同列,无法匹配合并")
    
    # 执行内连接,只保留匹配的行
    merged_df = pd.merge(df1, df2, on=common_cols, how='inner')
    
    # 调整列顺序:先df1的列,再df2中除共同列外的列
    df2_unique_cols = [col for col in df2.columns if col not in common_cols]
    final_columns = df1.columns.tolist() + df2_unique_cols
    merged_df = merged_df[final_columns]
    
    # 保存结果到输出文件
    merged_df.to_csv(output_path, index=False)

if __name__ == "__main__":
    # 设置命令行参数解析
    parser = argparse.ArgumentParser(description='基于共同列合并两个CSV文件,仅保留匹配行')
    parser.add_argument('first_csv', help='第一个CSV文件路径')
    parser.add_argument('second_csv', help='第二个CSV文件路径')
    parser.add_argument('output_csv', help='输出的合并后CSV文件路径')
    
    args = parser.parse_args()
    
    # 调用合并函数
    merge_csv_files(args.first_csv, args.second_csv, args.output_csv)

运行方式

在命令行中执行:

python merge_csv.py ./first.csv ./second.csv ./third.csv

说明

  • 脚本会自动识别两个CSV的所有共同列,基于这些列做匹配(如果有多个共同列,会同时匹配所有列的值)
  • 内连接(how='inner')确保只有在两个文件中共同列值完全匹配的行才会被保留
  • 输出的列顺序严格按照需求:先first.csv的所有列(a、b、c、d),再second.csv中除共同列外的列(x、y、z)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:42:40