Python 基于pandas中的多个键合并两个数据帧

Python 基于pandas中的多个键合并两个数据帧,python,pandas,merge,dataframe,Python,Pandas,Merge,Dataframe,熊猫(或其他模块)是否具有支持基于多个键合并(或连接)两个表的功能 例如,我有两个表(数据帧)a和b: >>> a A B value1 1 1 23 1 2 34 2 1 2342 2 2 333 >>> b A B value2 1 1 0.10 1 2 0.20 2 1 0.13 2 2 0.33 预期的结果是: A B value1 value2 1 1

熊猫(或其他模块)是否具有支持基于多个键合并(或连接)两个表的功能

例如,我有两个表(数据帧)
a
b

>>> a
A  B  value1
1  1      23
1  2      34
2  1    2342
2  2     333

>>> b
A  B  value2
1  1    0.10
1  2    0.20
2  1    0.13
2  2    0.33
预期的结果是:

A  B  value1  value2
1  1      23    0.10
1  2      34    0.20
2  1    2342    0.13
2  2     333    0.33

要通过多个键进行合并,只需将列表中的键传递给:


事实上,
pd.merge
的默认值是使用两个数据帧的列标签的交集,因此
pd.merge(a,b)
在这种情况下同样有效。

根据最新的panda文档,on参数接受一个标签或字段名列表,并且必须在两个数据帧中都找到。以下是MWE的使用说明:

a = pd.DataFrame({'A':['0', '0', '1','1'],'B':['0', '1', '0','1'], 'v':True, False, False, True]})

b = pd.DataFrame({'A':['0', '0', '1','1'], 'B':['0', '1', '0','1'],'v':[False, True, True, True]})

result = pd.merge(a, b, on=['A','B'], how='inner', suffixes=['_and', '_or'])
>>> result
    A   B   v_and   v_or

0   0   0   True    False
1   0   1   False   True
2   1   0   False   True
3   1   1   True    True
关于:标签或列表 要联接的列或索引级别名称。必须在两个数据帧中都找到它们。如果on为None且未在索引上合并,则默认为两个数据帧中的列的交点


查看最新文档以了解更多详细信息。

@SurahLi-很高兴它有所帮助!如果你满意地回答了这个问题,请考虑把它标记为一个被接受的答案。(或者如果您对
merge
仍有疑问,请告诉我,我会尽力回答。)如果列名不同怎么办?@EntryLevelR:您可以使用
左上的
右上的
参数(而不是
上的
)来解决问题。为什么我不能在这种情况下添加
如何='left'
?它会生成
SyntaxError:keyword参数repeated
。当我尝试此解决方案时,会收到以下错误消息-->TypeError:merge()缺少1个必需的位置参数:“right”还有其他答案提供OP的问题,它们是在一段时间前发布的。在发布答案时,请确保添加新的解决方案或更好的解释,尤其是在回答旧问题时。
a = pd.DataFrame({'A':['0', '0', '1','1'],'B':['0', '1', '0','1'], 'v':True, False, False, True]})

b = pd.DataFrame({'A':['0', '0', '1','1'], 'B':['0', '1', '0','1'],'v':[False, True, True, True]})

result = pd.merge(a, b, on=['A','B'], how='inner', suffixes=['_and', '_or'])
>>> result
    A   B   v_and   v_or

0   0   0   True    False
1   0   1   False   True
2   1   0   False   True
3   1   1   True    True