pandas DataFrame 删除重复的行的实现方法
在处理数据的过程中,经常会出现获取到的数据中存在重复的行的情况。在使用 pandas Dataframe 时,也可能会遇到这个问题。这时候,需要使用 Dataframe 方法之一:drop_duplicates()
。
drop_duplicates()
drop_duplicates()
方法用于删除重复的行。它还可以接收多个参数,以控制删除操作的一些细节,例如,指定列、控制保留哪个重复行等。
drop_duplicates()
的语法结构如下:
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)
该方法可以接收以下参数:
subset
: 指定需要检查重复项的列名或者列的序列。默认是所有的列。可以是单个列名或一组列名,如果需要检查多列,可以将列名组成一个列表传递给该参数,比如subset=['col1', 'col2']
。keep
: 保留哪个重复行,默认是first
,即保留出现在前面的行,其它的行被删除。如果设置为last
,则保留出现在后面的行。如果设置为False
,则删除所有重复行。inplace
: 是否直接在原始的 Dataframe 上进行修改,如果为True
,则原始的 Dataframe 上进行修改,返回None
。如果为False
,则返回一个新的 Dataframe。默认为False
。ignore_index
: 是否重置行的索引。默认为False
,即保留原始的行索引。
下面给出两个例子,具体说明如何使用 drop_duplicates()
方法。
示例 1:删除所有重复的行
首先,生成一个有重复的行的 Dataframe 如下:
import pandas as pd
data = {'A': [1, 2, 2, 3, 4, 4], 'B': [5, 6, 6, 7, 8, 8]}
df = pd.DataFrame(data)
print(df)
输出:
A B
0 1 5
1 2 6
2 2 6
3 3 7
4 4 8
5 4 8
然后,使用 drop_duplicates()
方法删除所有重复的行,代码如下:
df.drop_duplicates(keep=False, inplace=True)
print(df)
输出:
A B
0 1 5
3 3 7
可以看到,所有重复的行都被删除了。
示例 2:根据指定列删除重复的行
生成一个有重复的行的 Dataframe 如下:
import pandas as pd
data = {'A': [1, 2, 2, 3, 4, 4], 'B': [5, 6, 6, 7, 8, 8], 'C': [9, 9, 10, 11, 11, 12]}
df = pd.DataFrame(data)
print(df)
输出:
A B C
0 1 5 9
1 2 6 9
2 2 6 10
3 3 7 11
4 4 8 11
5 4 8 12
然后,根据列 A
和 B
去重,保留第一个出现的行。代码如下:
df.drop_duplicates(subset=['A', 'B'], inplace=True, keep='first')
print(df)
输出:
A B C
0 1 5 9
1 2 6 9
3 3 7 11
4 4 8 11
可以看到,仅保留第一个重复的行,使得结果 Dataframe 中不再存在任何重复的行。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas DataFrame 删除重复的行的实现方法 - Python技术站