gpt4 book ai didi

python - 删除在一列中具有相同值而在另一列中具有不同值的 pandas 中的所有行

转载 作者:行者123 更新时间:2023-11-28 22:11:07 25 4
gpt4 key购买 nike

假设我有以下类型的数据框:

   col1 col2
0 123 a
1 123 a
2 123 a
3 123 b
4 345 a
5 345 c
6 456 d
7 456 d
8 678 e
9 897 f

对于 col1 中的特定重复值,所有对应的 col2 值应该完全相同。如果相应的 col2 值之一不同,则该 col1 值的所有实例都将被删除。所以在上面的示例中,所有在 col1 中具有 123 的行都被删除,因为有一个 ba 不同> 的。

col1 中对应于唯一值的行被保留。最后,在 col1 中所有重复的值中(假设它们都具有相同的对应 col2 值),只保留一个。所以输出将是:

   col1 col2
6 456 d
8 678 e
9 897 f

有没有一种不使用 for 循环的有效方法?

最佳答案

在 DataFrame 中搜索重复项时,您可以使用 subsetkeep 参数。

示例:

# make df
data = zip([123, 123, 123, 123, 345, 345, 456, 456, 678, 897],
['a', 'a', 'a', 'b', 'a', 'c', 'd', 'd', 'e', 'f'])
df = pd.DataFrame(data=data, columns=['col1', 'col2'])

# dedupe
df.drop_duplicates().drop_duplicates(subset=['col1'], keep=False)

# output
# col1 col2
# 6 456 d
# 8 678 e
# 9 897 f

第一个 .drop_duplicates() 保留每个唯一行的第一个实例。第二个删除 col1 具有相同值的任何行,而不考虑 col2(不保留任何行)。因为此时我们只处理唯一的行,所以 .drop_duplicates(subset=['col1'], keep=False) 必然只删除具有重复的 col1 的行值和不同的 col2

关于python - 删除在一列中具有相同值而在另一列中具有不同值的 pandas 中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56134450/

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