具有以下DF:
Data frame A
A B
0 a x
1 b y
2 c z
Data frame B
X Y V
0 a x v1
1 b y v2
2 c o v3
3 a x v4
我试着在[A,B]
&[X,Y]
以获得以下结果,其中第一个匹配被保存,另一个被忽略,NaN
值表示不匹配。
A B X Y V
0 a x a x v1 <-- first match of 'a','x'
1 b y b y v2
2 c z NaN NaN NaN <-- no match for c,z
从上面的例子来看,DF B中被忽略的行是:
3 a x v4
然而,我的代码,
a = pd.DataFrame({"A":['a','b','c'], "B":['x','y','z']})
b = pd.DataFrame({"X":['a','b','c','a'], "Y":['x','y','o','x'], "V":['v1','v2','v3','v4']})
pd.merge(a,b,left_on=['A','B'], right_on=['X','Y'])
输出以下内容:
A B X Y V
0 a x a x v1
1 a x a x v4
2 b y b y v2
我需要更改什么?
尝试将合并"how"更改为"left"(默认为内部(,然后在A&B.
result = pd.merge(a,b,left_on=['A','B'], right_on=['X','Y'], how='left')
result = result.drop_duplicates(subset=['A','B'])
生成以下
A B X Y V
0 a x a x v1
2 b y b y v2
3 c z NaN NaN NaN