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

Pandas合并DataFrame时出现列数不匹配及传参类型错误问题咨询

错误原因

  • 合并键数量不匹配:pd.merge要求left_on和right_on指定的关联列数量必须相等,你左边指定了intA、intB两列作为关联键,右边只给了gene_symbol一列,数量不对应直接触发报错
  • 入参变量混淆:pd.read_csv的入参应该是文件路径字符串,如果你传入的df1、df2本身就是字符串类型的路径,读取后用同名变量存储DataFrame会造成覆盖,导致后续merge操作实际传入了字符串而非DataFrame,就是a <class 'str'> was passed报错的直接原因

正确实现方案

通过两次左连接分别匹配intA和intB对应的属性,再调整列顺序即可:

import pandas as pd

# 替换为你实际的csv文件路径
df1 = pd.read_csv("df1.csv")
df2 = pd.read_csv("df2.csv")

# 匹配intA对应的染色体和基因类型
result = pd.merge(df1, df2, how="left", left_on="intA", right_on="gene_symbol")
result = result.rename(columns={"chr": "chr_A", "gene_type": "gene_type_A"}).drop(columns="gene_symbol")

# 匹配intB对应的染色体和基因类型
result = pd.merge(result, df2, how="left", left_on="intB", right_on="gene_symbol")
result = result.rename(columns={"chr": "chr_B", "gene_type": "gene_type_B"}).drop(columns="gene_symbol")

# 调整列顺序并修改为你要求的重复列名
result = result[["intA", "intB", "chr_A", "chr_B", "gene_type_A", "gene_type_B"]]
result.columns = ["intA", "intB", "chr", "chr", "gene_type", "gene_type"]

# 输出结果csv
result.to_csv("result.csv", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:15:03