假设我们有2个数据帧
left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
'key2': ['K0', 'K1', 'K0', 'K1'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
'key2': ['K0', 'K0', 'K0', 'K0'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
使用pd.merge(left,right,how='inner',on=['key1','key2'])
时,方法是返回left['key1'] == right['key1']
AND left['key2'] == right['key2']
的值还是使用另一个布尔运算符?
这个特征是否与语言特定属性有关,还是因为内,外,左,右连接的工作原理?
我的直觉是它使用'和'布尔运算符,但我需要一个明确的答案。
答案 0 :(得分:1)
从pd.merge的文档中,它是一个交集,所以你描述了一个AND:
如何:{'左','右','外','内'},默认'内'
left:仅使用左框架中的键,类似于SQL左外连接;保留关键顺序
右:仅使用右框中的键,类似于SQL右外连接;保留关键顺序
outer:使用来自两个帧的键的并集,类似于SQL全外连接;按字典顺序排序键
inner:使用来自两个帧的键的交集,类似于SQL内部联接;保留左键的顺序