df.drop_duplicates()
是 Pandas 中用于删除重复行的函数。它可以根据特定列或整个数据框中出现的重复值,保留第一项或最后一项,并删除其余的重复项。这个函数很适合用于数据清洗,特别是处理重复数据时。
基本语法:
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)
参数说明:
-
subset: 指定检查重复值的列或列的组合。
- 类型:列表、字符串或None(默认)。
- 默认值:
None
,即对所有列检查重复值。 - 用法:如果只想根据某些列来判断重复行,可以通过
subset
参数指定这些列。
示例:
df.drop_duplicates(subset=['col1', 'col2'])
-
keep: 指定在处理重复项时保留哪一项。
- 类型:
{'first', 'last', False}
'first'
:保留第一次出现的重复项(默认值)。'last'
:保留最后一次出现的重复项。False
:删除所有重复项,不保留任何重复项。
示例:
df.drop_duplicates(keep='last') df.drop_duplicates(keep=False) # 删除所有重复项
- 类型:
-
inplace: 是否直接在原数据上修改,还是返回一个新的
DataFrame
。- 类型:布尔值,
True
或False
。 - 默认值:
False
。 False
:返回一个删除了重复行后的新DataFrame
,不改变原数据。True
:直接修改原数据,操作不会返回新DataFrame
。
示例:
df.drop_duplicates(inplace=True)
- 类型:布尔值,
-
ignore_index: 是否重置索引。
- 类型:布尔值,
True
或False
。 - 默认值:
False
。 True
:删除重复项后,重置索引。False
:删除重复项后,保留原来的索引。
示例:
df.drop_duplicates(ignore_index=True)
- 类型:布尔值,
示例:
-
删除所有列的重复行(默认行为):
import pandas as pd data = {'A': [1, 1, 2, 2, 3], 'B': [4, 4, 5, 6, 6], 'C': [7, 7, 8, 9, 9]} df = pd.DataFrame(data) df_cleaned = df.drop_duplicates() print(df_cleaned)
输出:
A B C 0 1 4 7 2 2 5 8 3 2 6 9 4 3 6 9
-
基于特定列删除重复行:
df_cleaned = df.drop_duplicates(subset=['A']) print(df_cleaned)
输出:
A B C 0 1 4 7 2 2 5 8 4 3 6 9
这里根据
A
列删除重复行,保留了第一次出现的每个A
值。 -
保留最后一次出现的重复项:
df_cleaned = df.drop_duplicates(subset=['A'], keep='last') print(df_cleaned)
输出:
A B C 1 1 4 7 3 2 6 9 4 3 6 9
这里保留了
A
列中最后一次出现的值。 -
删除所有重复行(不保留任何项):
df_cleaned = df.drop_duplicates(keep=False) print(df_cleaned)
输出:
A B C 2 2 5 8 3 2 6 9 4 3 6 9
此时,完全删除了所有重复项。
-
inplace=True
修改原数据:df.drop_duplicates(inplace=True) print(df)
此时,
df
自身已经被修改为删除了重复行的状态。 -
重置索引:
df_cleaned = df.drop_duplicates(ignore_index=True) print(df_cleaned)
输出:
A B C 0 1 4 7 1 2 5 8 2 2 6 9 3 3 6 9
总结:
df.drop_duplicates()
是 Pandas 中用于去重的函数,允许你根据行或指定列删除重复值,并通过不同的参数控制去重行为和结果。它对数据清洗非常有用,特别是在需要处理重复记录时。