gpt4 book ai didi

python - 在不同的列中删除无序的重复项

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

我试图返回一个 df,其中重复值已被删除。我曾尝试使用 drop.duplicates(),但已被 subset 的列中的值未排序。如同,这些值是重复的,但它们的顺序不同。

例如,使用下面的 df,如果我尝试从 Item_XItem_Y 中删除重复值,它将返回相同的 df。预期输出将删除第二行的位置。

import pandas as pd

d = ({
'Item_X' : ['Foo','Bar','Bot','Bot','Bar','Foo'],
'Item_Y' : ['Bar','Foo','Foo','Bot','Bar','Foo'],
'Value' : [1,2,3,4,5,6],
})

df = pd.DataFrame(data = d)

df.drop_duplicates(subset=['Item_X','Item_Y'])

预期结果:

  Item_X Item_Y  Value
0 Foo Bar 1
2 Bot Foo 3
3 Bot Bot 4
4 Bar Bar 5
5 Foo Foo 6

实际输出(不正确):

  Item_X Item_Y  Value
0 Foo Bar 1
1 Bar Foo 2
2 Bot Foo 3
3 Bot Bot 4
4 Bar Bar 5
5 Foo Foo 6

解决这个问题最有效的方法是什么?

最佳答案

您需要沿水平轴对列进行排序,然后获取掩码以对原始帧进行子集化。以下是如何使用 np.sortdf.duplicated 来做到这一点:

df[~pd.DataFrame(np.sort(df2[['Item_X', 'Item_Y']], axis=1)).duplicated()]

Item_X Item_Y Value
0 Foo Bar 1
2 Bot Foo 3
3 Bot Bot 4
4 Bar Bar 5
5 Foo Foo 6

关于python - 在不同的列中删除无序的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56334241/

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