我有2个数据框,如下所示:
DF1=
A B C D
0 AA BA KK 0
1 AD BD LL 0
2 AF BF MM 0
DF2=
K L
0 AA BA
1 AD BF
2 AF BF
最后,我想得到的是:
DF1=
A B C D
0 AA BA KK 1
1 AD BD LL 0
2 AF BF MM 1
因此,我想比较两个数据帧,我想查看第一数据帧(对于列A和B)的哪些行与第二数据帧(列K和L)相同,并在第一数据帧的列D上分配1。
我可以使用for循环,但是输入大量条目会很慢。
任何线索或建议将不胜感激。
这是我解决的方法:
df1 = pd.DataFrame({"A":['AA','AD','AD'], "B":['BA','BD','BF']})
df2 = pd.DataFrame({"A":['AA','AD'], 'B':['BA','BF']})
df1['compressed']=df1.apply(lambda x:'%s%s' % (x['A'],x['B']),axis=1)
df2['compressed']=df2.apply(lambda x:'%s%s' % (x['A'],x['B']),axis=1)
df1['Success'] = df1['compressed'].isin(df2['compressed']).astype(int)
print df1
A B compressed Success
0 AA BA AABA 1
1 AD BD ADBD 0
2 AD BF ADBF 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句