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

如何用Python将两个CSV文件并排合并?代码报错求解

问题:如何并排合并两个CSV文件?

我查过合并CSV的相关方案,但都不符合我的需求——我需要把两个CSV文件横向并排合并(原文件是两个独立的表格,合并后将它们的列拼接在一起,形成一个宽表格)。

我的代码如下:

# 找到第一个学校CSV文件
file1 = file1_path_in_folder
df1 = pd.read_csv(file1)
df1.head()

# 找到第二个学校CSV文件
file2 = file2_path_in_folder
df2 = pd.read_csv(file2)
df2.head()

merged = df1.merge(df2, on=' ') # 引号里的空格是因为第一个单元格(A1)是空的
merged.to_csv("output.csv", index=False)

运行后出现错误:

Traceback (most recent call last):
  File "c:\Users\anyuy\Documents\College_search\program\compare_read_csv.py", line 25, in <module>    
    merged = df1.merge(df2, on=' ')
  File "C:\Users\anyuy\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pandas\core\frame.py", line 9345, in merge
    return merge(
  File "C:\Users\anyuy\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pandas\core\reshape\merge.py", line 107, in merge        
    op = _MergeOperation(
  File "C:\Users\anyuy\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pandas\core\reshape\merge.py", line 700, in __init__     
    ) = self._get_merge_keys()
  File "C:\Users\anyuy\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pandas\core\reshape\merge.py", line 1097, in _get_merge_keys
    right_keys.append(right._get_label_or_level_values(rk))
  File "C:\Users\anyuy\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pandas\core\generic.py", line 1840, in _get_label_or_level_values
    raise KeyError(key)
KeyError: ' '

我试过去掉引号里的空格,还是报同样的错。请问问题出在哪?怎么解决?


解决方法

错误原因

你用错了合并方法:merge()是用来按指定列做关联合并(类似数据库的JOIN操作,需要两个表有共同的关联列),但你要的是横向拼接列,完全不是一个场景。另外,你指定的on=' '根本不是DataFrame里存在的列名,所以触发了KeyError。

正确实现

直接用pd.concat()方法,指定axis=1即可实现横向列拼接:

修改后的完整代码

import pandas as pd

# 读取CSV时,如果原文件没有列名(A1空白),设置header=None避免列名混乱
df1 = pd.read_csv(file1_path_in_folder, header=None)
df2 = pd.read_csv(file2_path_in_folder, header=None)

# axis=1表示按列拼接,把两个表的列并排放在一起
merged = pd.concat([df1, df2], axis=1)

# 保存结果,header=False避免自动添加列名
merged.to_csv("output.csv", index=False, header=False)

注意事项

  • 如果两个CSV的行数不一致,拼接后行数少的那个表的空缺行会自动用NaN填充,这是正常现象。
  • 如果原文件有自己的列名,去掉header=None和to_csv里的header=False即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:39:21