在熊猫中如何基于相同的ID遍历两个数据帧

时间:2018-09-21 16:40:40

标签: python pandas for-loop dataframe if-statement

熊猫

我有两个数据框,想要做一个嵌套循环。

我要迭代df1的每一行,然后选择col1(id)和col2。

然后,它将获取ID并遍历df2,并检查行是否具有相同的ID,然后将df1中的列与df2中的列进行比较

如果df1中的col2与df2中的col3匹配,它将返回True 并将其附加到df1的行中。

df1
col1    col2   col3   col3
 01      A     S      True
 02      D     F      True
 03      Z     B      False

df2
col1    col2   col3
 01      A      A
 02      B      A
 02      D      F
 02      C      D
 02      D      V
 03      X      W
 03      E      X

2 个答案:

答案 0 :(得分:1)

IIUC使用tupleisin

df1[['col1','col2']].apply(tuple,1).isin(df2[['col1','col3']].apply(tuple,1))
Out[1051]: 
0     True
1     True
2    False
dtype: bool

答案 1 :(得分:1)

设置

a = df1[['col1', 'col2']].values
b = df2[['col1', 'col2']].values

使用带有anyall的广播:

(a == b[:, None]).any(0).all(1)

array([ True,  True, False])