gpt4 book ai didi

python - 基于pandas中的一对列进行匹配

转载 作者:行者123 更新时间:2023-12-04 02:08:52 26 4
gpt4 key购买 nike

我有一个包含多列的数据框 df1。我有 df2 具有相同的列集。我想获取 df2 中不存在的 df1 记录。我能够按如下方式执行此任务:

df1[~df1['ID'].isin(df2['ID'])]

现在我想同样的操作,但是关于NAME和ID的组合。这意味着如果来自 df1 的 NAME 和 ID 作为一对在 df2 中也作为同一对存在,那么整个记录不应该是我的结果的一部分。

如何使用 Pandas 完成此任务?

最佳答案

这实际上很容易。

df1[(~df1[['ID', 'Name']].isin(df2[['ID', 'Name']])).any(axis=1)]

您将要比较的列名称作为列表传递。有趣的部分是它的输出。

比方说 df1等于:
   ID  Name
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 1 1

df2等于:
ID  Name
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 1 9

(ID, Name)配对 df1df2匹配 除了 对于第 9 行。我的回答的结果将返回:
   ID  Name
9 1 1

这正是您想要的。

更详细地说,当你做面具时:
~df[['ID', 'Name']].isin(df2[['ID', 'Name']]

你得到这个:
      ID   Name
0 False False
1 False False
2 False False
3 False False
4 False False
5 False False
6 False False
7 False False
8 False False
9 False True

我们想要选择其中一列为真的行。为此,我们可以添加 any(axis=1)最后创建:
0    False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 True

然后当你使用这个系列索引时,它只会选择第 9 行。

关于python - 基于pandas中的一对列进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40755349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com