假设我有两个这种格式的数据框(称为
df1
和df2
):+------------------------+------------------------+--------+
| user_id | business_id | rating |
+------------------------+------------------------+--------+
| rLtl8ZkDX5vH5nAx9C3q5Q | eIxSLxzIlfExI6vgAbn2JA | 4 |
| C6IOtaaYdLIT5fWd7ZYIuA | eIxSLxzIlfExI6vgAbn2JA | 5 |
| mlBC3pN9GXlUUfQi1qBBZA | KoIRdcIfh3XWxiCeV1BDmA | 3 |
+------------------------+------------------------+--------+
我希望得到一个由在df1
和df2
中都有的user_id
所对应的所有行组成的数据框。(例如,如果一个user_id
同时出现在df1
和df2
中,则将这两行包含在输出数据框中)
我想到了很多方法,但它们都让我感觉不够简洁。例如,我们可以在每个数据框中找到所有独特的user_id
,创建每个集合,找到它们的交集,使用结果集筛选两个数据框,并连接两个筛选后的数据框。
也许那是最好的方法,但我知道Pandas非常聪明。有没有更简单的方法来做到这一点?我看过merge
,但我认为那不是我需要的。
df1
和df2
长度相同时才有效。否则,df2.user_id.isin(df1.user_id) & df1.user_id.isin(df2.user_id)
将无法一起广播。 - Koremdf1 = df1[df1.index.isin(df2.index)]; df2 = df2[df2.index.isin(df1.index)]
来解决。 - Koremdf2.user_id.isin(df1.user_id) & df1.user_id.isin(df2.user_id)
- Antonio Sesto