在没有 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,以及列表和字典不可哈希,因此我将值转换为可哈希的元组。然后计算结果数组中散列值的出现次数。
我有以下数据框:
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,以及列表和字典不可哈希,因此我将值转换为可哈希的元组。然后计算结果数组中散列值的出现次数。