我有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循环,但是输入大量条目会很慢。

任何线索或建议,将不胜感激。

最佳答案

如果您重命名了df2的列,然后可以逐行进行比较,这将更加容易:

In [35]:

df2.columns = ['A', 'B']
df2
Out[35]:
    A   B
0  AA  BA
1  AD  BF
2  AF  BF
In [38]:

df1['D'] = (df1[['A', 'B']] == df2).all(axis=1).astype(int)
df1
Out[38]:
    A   B   C  D
0  AA  BA  KK  1
1  AD  BD  LL  0
2  AF  BF  MM  1

关于python - 比较两个Python Pandas数据框的2列并获取公共(public)行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30291032/

10-11 01:33