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

Python中如何按列合并两个CSV文件?求解决方法

嘿,我来帮你解决这个CSV按列合并的问题!我猜你之前的代码可能在对齐方式、行数处理或者合并方向上出了问题,下面给你两种靠谱的实现方案,分别适合不同的场景:

方案一:用Pandas快速搞定(推荐)

Pandas是处理表格类任务的神器,代码简洁还能自动处理很多细节。先确保你已经安装了它(没装的话跑pip install pandas就行),然后用下面的代码:

import pandas as pd

# 读取两个CSV文件
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')

# 按列合并(axis=1表示横向合并,也就是按列拼接)
merged_df = pd.concat([df1, df2], axis=1)

# 保存结果到output.csv,index=False是为了不把行索引写入文件
merged_df.to_csv('output.csv', index=False)

注意事项:

  • 如果两个CSV的行数不一样,合并后行数少的那个文件对应的列会用NaN填充缺失的行;
  • 如果你不是要按行索引对齐,而是想按某一列(比如共同的ID列)匹配合并,那得换成merge方法,比如:
    # 假设两个文件都有一个叫"id"的主键列
    merged_df = pd.merge(df1, df2, on='id')
    
  • 要是你的CSV用了非逗号分隔符(比如分号),可以在read_csv里指定delimiter=';'。
方案二:用Python标准库csv实现(无依赖)

如果不想安装第三方库,用内置的csv模块也能实现,代码稍微繁琐一点,但完全可控:

import csv

# 同时打开三个文件:两个输入,一个输出
with open('file1.csv', 'r', newline='') as f1, \
     open('file2.csv', 'r', newline='') as f2, \
     open('output.csv', 'w', newline='') as outfile:

    reader1 = csv.reader(f1)
    reader2 = csv.reader(f2)
    writer = csv.writer(outfile)

    # 先处理表头:把两个文件的表头合并后写入
    header1 = next(reader1)
    header2 = next(reader2)
    writer.writerow(header1 + header2)

    # 逐行合并内容
    for row1, row2 in zip(reader1, reader2):
        writer.writerow(row1 + row2)

    # 处理其中一个文件有多余行的情况:用空值填充对应列
    for row in reader1:
        writer.writerow(row + [''] * len(header2))
    for row in reader2:
        writer.writerow([''] * len(header1) + row)

注意事项:

  • 如果你的CSV没有表头,把处理表头的两行(header1 = next(reader1)和header2 = next(reader2))删掉就行;
  • 同样,如果用了非逗号分隔符,在csv.reader和csv.writer里指定delimiter=';'即可。

你可以对照自己之前的代码看看,是不是犯了这些常见错误:比如在Pandas里用了axis=0(行合并)而不是axis=1;或者没处理行数不一致的情况;又或者用了merge而不是concat(当你不需要按主键匹配的时候)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:40:41