当前位置: 首页 > 知识库问答 >
问题:

在本例中,如何基于相同的ID遍历两个数据帧

吕文林
2023-03-14

熊猫

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

我想迭代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个答案

经昱
2023-03-14

安装程序

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

将广播与anyall一起使用:

(a == b[:, None]).any(0).all(1)
array([ True,  True, False])
白星腾
2023-03-14

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
 类似资料:
  • 问题内容: 我有两个数组列表,声明为: 这两个字段都完全包含“值的相同”,实际上在自然界中是对应的。 我知道我可以遍历这样的循环之一: 但是,我想同时遍历两个列表。我知道它们的尺寸完全相同。我怎么做? 问题答案: 您可以使用:

  • 问题内容: 我试图将两个数组排列在一起,结果总是不正确。我将向您展示我的代码,获得的结果以及正在寻找的结果。 我想我只是做错了,但不确定其他方法。 我的代码: 结果:(缩短以节省空间) 我正在寻找的结果如下: 问题答案: 问题 嗯,问题当然出在您嵌套的foreach循环上。因为对于数组的每个元素,您都循环遍历整个数组(所以总共有* 次迭代)。 解决方案 为了解决这个问题,您必须一次遍历两个数组。

  • 在这里el.expect和practical的值是相同的,怎么样让这两次随机数生成的值不同? 常试过的方法:抽出来分别写函数调用,结果还是相同的。

  • 问题内容: 我要尝试运行三个数组,我想在一个函数中使用所有三个数组的值。这听起来可能令人困惑,但这是我所拥有的: 这会运行,但是我得到的是:(makeUser打印出3个值) 等等。 我想要的就是 这可能吗?任何帮助表示赞赏。 谢谢! 问题答案: 如果您始终确定数组的长度相等,那么最好循环遍历其中一个数组,并使用其索引来引用其他数组: 但是,我建议将这些数据放入字典中,但我认为这只是示例数据,用于说

  • 问题内容: 我有两个列表和数字,我想使用相同的指令遍历它们。像这样: 但这感觉多余。我知道我会写,但是要付出一定的时间。 有没有办法做到这一点而又不浪费时间呢? 问题答案: 这可以通过以下方式完成 : 将打印: 根据文档,请执行以下操作: 创建一个迭代器,该迭代器从第一个可迭代对象返回元素,直到耗尽为止,然后继续进行下一个可迭代对象,直到所有可迭代对象都耗尽为止。 如果列表中有列表, 则可用: 产

  • 我试图从dfb中减去dfa,其中列映射基于第三个映射数据帧。在本例中,应从x1中减去B,从x2中减去A。 这可以通过循环和其他一些肮脏的方法来实现,但我想知道是否有更简洁的方法来实现这一点。 数据帧a 数据帧b 数据帧c 所需结果