Pandas 的 drop_duplicates() 函数用于删除 DataFrame 中的重复行。默认情况下,这个函数会检查所有列,找出重复的行,并只保留第一次出现的行。这对于清洗数据和去除重复记录非常有用。
以下是 drop_duplicates() 函数的一些关键特点:
删除重复行:
默认情况下,删除所有重复的行,只保留第一次出现的行。
指定列:
可以指定特定的列来识别重复项。
就地删除:
通过设置 inplace=True,可以就地修改 DataFrame,不返回新的 DataFrame。
保持重复项:
通过设置 keep=False,可以保留所有重复项。
排序:
删除重复项后,行的顺序可能会改变。可以通过 sort_values() 进行排序。
处理空值:
drop_duplicates() 会将空值视为正常值来处理。
返回唯一指标:
可以返回一个 Series,标记每行是否是第一次出现。
import numpy as np
import pandas as pd
data.drop_duplicates(subset=['A', 'B'], keep='first', inplace=True) # 改原表
data_du = data.drop_duplicates(subset=['A', 'B'], keep='first') # 生成副本
subset对应的值是列名,表示只考虑这两列,将这两列对应值相同的行进行去重。
默认值为subset=None表示考虑所有列。
keep='first'表示保留第一次出现的重复行,是默认值。
keep='last'表示保留最后一次出现的重复行
keep=False 去除所有重复行
inplace=True表示直接在原来的DataFrame上删除重复项
默认值False表示生成一个副本。
df = pd.DataFrame(data=[{"A":"one", "B":1, "C":11}, {"A":"two", "B":2, "C":22}, {"A":"one", "B":1, "C":12}])
A | B | C | |
---|---|---|---|
0 | one | 1 | 11 |
1 | two | 2 | 22 |
2 | one | 1 | 12 |
data_du = df.drop_duplicates(subset=['A', 'B'], keep='first')
A | B | C | |
---|---|---|---|
0 | one | 1 | 11 |
1 | two | 2 | 22 |
three = pd.concat([d1, d2, d3], axis=0, ignore_index=True)
other = three.drop_duplicates(subset=None, keep=False) # 去重