Pandas统计重复列值及NumPy去重方法详解

沈亦白
沈亦白
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍如何在Pandas中利用duplicated方法统计并筛选包含重复值的列,通过keep参数控制保留逻辑。同时提供五种NumPy数组去重方案,包括利用unique、bincount及排序比较等技巧,帮助开发者高效处理数据中的重复项。

在Python数据分析中,处理重复数据是常见需求。

具体实现代码如下:

import pandas as pd
import numpy as np

salaries = pd.DataFrame({
 'name': ['BOSS', 'Lilei', 'Lilei', 'Han', 'BOSS', 'BOSS', 'Han', 'BOSS'],
 'Year': [2016, 2016, 2016, 2016, 2017, 2017, 2017, 2017],
 'Salary': [1, 2, 3, 4, 5, 6, 7, 8],
 'Bonus': [2, 2, 2, 2, 3, 4, 5, 6]
})
print(salaries)
print(salaries['Bonus'].duplicated(keep='first'))
print(salaries[salaries['Bonus'].duplicated(keep='first')].index)
print(salaries[salaries['Bonus'].duplicated(keep='first')])
print(salaries['Bonus'].duplicated(keep='last'))
print(salaries[salaries['Bonus'].duplicated(keep='last')].index)
print(salaries[salaries['Bonus'].duplicated(keep='last')])

运行上述代码后,输出结果如下所示:

 Bonus Salary Year name
0  2  1 2016 BOSS
1  2  2 2016 Lilei
2  2  3 2016 Lilei
3  2  4 2016 Han
4  3  5 2017 BOSS
5  4  6 2017 BOSS
6  5  7 2017 Han
7  6  8 2017 BOSS
0 False
1  True
2  True
3  True
4 False
5 False
6 False
7 False
Name: Bonus, dtype: bool
Int64Index([1, 2, 3], dtype='int64')
 Bonus Salary Year name
1  2  2 2016 Lilei
2  2  3 2016 Lilei
3  2  4 2016 Han
0  True
1  True
2  True
3 False
4 False
5 False
6 False
7 False
Name: Bonus, dtype: bool
Int64Index([0, 1, 2], dtype='int64')
 Bonus Salary Year name
0  2  1 2016 BOSS
1  2  2 2016 Lilei
2  2  3 2016 Lilei

除了Pandas,在NumPy中也有相应的操作方式。

针对NumPy数组中的重复值处理,主要包含以下几种方法:

假设我们有一个NumPy数组:

a = np.array([1, 2, 1, 3, 3, 3, 0])

目标是找出数组中重复出现的元素,即 [1, 3]。

可以通过以下几种方式实现:

方法1

m = np.zeros_like(a, dtype=bool)
m[np.unique(a, return_index=True)[1]] = True
a[~m]
方法2

a[~np.in1d(np.arange(len(a)), np.unique(a, return_index=True)[1], assume_unique=True)]
方法3

np.setxor1d(a, np.unique(a), assume_unique=True)
方法4

u, i = np.unique(a, return_inverse=True)
u[np.bincount(i) > 1]
方法5

s = np.sort(a, axis=None)
s[:-1][s[1:] == s[:-1]]

参考来源:https://stackoverflow.com/questions/11528078/determining-duplicate-values-in-an-array

以上关于Pandas统计重复列值及NumPy去重方法的介绍到此结束,希望能为读者提供实用参考,欢迎继续支持本站获取更多技术内容。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表