在没有 duplicate 函数的情况下检测 pandas 中的重复项

Detecting duplicates in pandas without the duplicate function

我有以下数据框:

df = pd.DataFrame({
    'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
    'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
    'rating': [4, 4, 3.5, 15, 5]})

df

通过使用duplicate函数我们可以得到重复项。

df.duplicated()

我想知道是否有一种方法可以在不使用它的情况下使用列表、集合等数据结构来模拟重复函数?

有趣的问题,但我想更多的是出于学术兴趣。

一种可能的方式,不一定是最有效的方式是:

i = [hash(tuple(i.values())) for i in df.to_dict(orient='records')]
j = [i.count(k)>1 for k in i]
Out[67]: [True, True, False, False, False]

为了进行有效比较,我为每一行取了哈希值。 dict_values,以及列表和字典不可哈希,因此我将值转换为可哈希的元组。然后计算结果数组中散列值的出现次数。