当前位置: 首页 > 面试题库 >

在两个Pandas数据框中查找公共行(交集)

卢阳泽
2023-03-14
问题内容

假设我有两个这种格式的数据框(分别称为df1df2):

+------------------------+------------------------+--------+
|        user_id         |      business_id       | rating |
+------------------------+------------------------+--------+
| rLtl8ZkDX5vH5nAx9C3q5Q | eIxSLxzIlfExI6vgAbn2JA |      4 |
| C6IOtaaYdLIT5fWd7ZYIuA | eIxSLxzIlfExI6vgAbn2JA |      5 |
| mlBC3pN9GXlUUfQi1qBBZA | KoIRdcIfh3XWxiCeV1BDmA |      3 |
+------------------------+------------------------+--------+

我正在寻找user_iddf1和中具有共同点的所有行的数据框df2。(即,如果user_id是在两个df1df2,在输出中包括数据帧的两行)

我可以想到很多方法来解决这个问题,但是它们都使我感到笨拙。例如,我们可以user_id在每个数据帧中找到所有唯一的,创建每个的唯一集合,找到它们的交集,使用结果集过滤两个数据帧,然后将两个过滤后的数据帧连接起来。

也许这是最好的方法,但是我知道熊猫很聪明。有没有更简单的方法可以做到这一点?我已经看过了,merge但我认为这不是我所需要的。


问题答案:

我的理解是,这个问题可以在本文中更好地回答。

但简单来说,使用此方法对OP的答案很简单:

s1 = pd.merge(df1, df2, how='inner', on=['user_id'])

从而为s1提供5列:user_id以及df1和df2的其他两列。



 类似资料:
  • 假设我有两个这种格式的数据帧(称它们为和): 我希望获得所有行的数据帧,这些行在和中有一个公共的。(即,如果同时位于和中,则在输出数据帧中包括这两行) 我能想到很多方法来解决这个问题,但它们都让我觉得笨拙。例如,我们可以在每个数据帧中找到所有唯一的s,创建每个数据帧的集合,找到它们的交集,用结果集过滤两个数据帧,并连接两个过滤后的数据帧。 也许这是最好的方法,但我知道熊猫很聪明。有没有更简单的方法

  • 问题内容: 我有2个数据框,如下所示: 最后,我想得到的是: 因此,我想比较两个数据帧,我想查看第一数据帧(对于列A和B)的哪些行与第二数据帧(列K和L)相同,并在第一数据帧的列D上分配1。 我可以使用for循环,但是输入大量条目会很慢。 任何线索或建议将不胜感激。 问题答案: 这是我解决的方法:

  • 问题内容: 我正在使用下面的代码合并两个csv(数据帧): 我有以下CSV文件 文件1: 文件2: 合并后 如果您注意到student_id的开头附加了0,应该将其视为文本,但是在合并并使用函数后,它将其转换为数字并删除了前导0。 即使在to_csv之后,如何将列保持为“文本”? 我认为它的to_csv函数可以再次保存为数字添加了dtype = {‘student_id’:str}。 问题答案:

  • 问题内容: 我正在考虑对每个具有大量列的数据帧进行合并操作。不想结果有两个具有相同名称的列。我正在尝试查看两个框架之间共有的列名列表: 我该如何在Index对象上操作该NumPy布尔数组,使其仅返回公用列的列表? 问题答案: 使用或: 后一种选择的替代语法:

  • 本文向大家介绍在C ++中的两个双链表中查找公共节点数,包括了在C ++中的两个双链表中查找公共节点数的使用技巧和注意事项,需要的朋友参考一下 假设我们有两个双向链表。我们必须在两个双向链表中都找到公共节点的总数。因此,如果两个列表像[15、16、10、9、7、17]和[15、16、40、6、9],则有三个公共节点。 使用两个嵌套循环遍历两个列表,直到列表的末尾,对于列表中的每个节点,检查它是否与

  • 我试图在我的ArrayList“list1”中找到公共元素 它包含“dateFrom”和“dateTo”之间的所有日期以及我的列表“list2” 其中dateTime是一个变量,它仅存储具有以下结构的文本文件中的日期: 我尝试使用来查找清单2中也在清单1中的所有日期,但我认为我的问题是清单2不是一个ArrayList。我该怎么解决呢?