gpt4 book ai didi

python - 如何在一列中查找具有相同值但在另一列中具有不同值的记录

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:08 24 4
gpt4 key购买 nike

我有两个列名完全相同的 pandas df。其中一列名为 id_number,它对每个表都是唯一的(我的意思是 id_number 在每个 df 中只能出现一次)。我想找到所有具有相同 id_number 但在任何列中至少有一个不同值的记录,并将这些记录存储在新的 pandas df 中。

我试过合并(更具体地说是内部连接),但它只保留一个具有特定 id_number 的记录,所以我无法查找两个 df 之间的任何差异。

让我举一些例子来提供更清楚的解释:

示例 dfs:

第一个DF:

id_number    name    type    city
1 John dev Toronto
2 Alex dev Toronto
3 Tyler dev Toronto
4 David dev Toronto
5 Chloe dev Toronto

第二个 DF:

id_number    name    type    city
1 John boss Vancouver
2 Alex dev Vancouver
4 David boss Toronto
5 Chloe dev Toronto
6 Kyle dev Vancouver

我希望生成的 df 包含以下记录:

id_number    name    type    city
1 John dev Toronto
1 John boss Vancouver
2 Alex dev Toronto
2 Alex dev Vancouver
4 David dev Toronto
4 David Boss Toronto

注意:我不希望 id_number 为 5 的记录出现在生成的 df 中,这是因为 id_number 为 5 的记录在两个 df 中完全相同。

实际上,每条记录有 80 列,但我认为这些表格使我的观点更清楚一些。再次总结一下,我希望生成的 df 包含具有相同 id_numbers 但在任何其他列中具有不同值的记录。在此先感谢您的帮助!

最佳答案

这是使用 nunique 的一种方法,然后我们选择那些 id_number 多于 1 并将它们切出

s = pd.concat([df1, df2])
s = s.loc[s.id_number.isin(s.groupby(['id_number']).nunique().gt(1).any(1).loc[lambda x : x].index)]
s
Out[654]:
id_number name type city
0 1 John dev Toronto
1 2 Alex dev Toronto
3 4 David dev Toronto
0 1 John boss Vancouver
1 2 Alex dev Vancouver
2 4 David boss Toronto

关于python - 如何在一列中查找具有相同值但在另一列中具有不同值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57296704/

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