检测重复数据
1. duplicated()
方法
duplicated()
方法用于检测 DataFrame 中的重复行。默认情况下,会返回一个布尔 Series,指示每一行是否是重复的。
import pandas as pd
# 创建示例 DataFrame
df = pd.DataFrame({
'A': [1, 2, 2, 3, 4, 4], 'B': ['a', 'b', 'b', 'c', 'd', 'd']})
# 检测重复行
duplicates = df.duplicated()
print(duplicates)
输出:
0 False
1 False
2 True
3 False
4 False
5 True
dtype: bool
2. keep
参数
keep
参数用于指定如何标记重复项。可选值有:
'first'
:将第一次出现的重复项标记为False
,后续重复项标记为True
(默认)。'last'
:将最后一次出现的重复项标记为False
,前面的重复项标记为True
。False
:将所有重复项标记为True
。
# 使用 'last' 参数
duplicates_last = df.duplicated(keep='last')
print(duplicates_last)
输出:
0 True
1 False
2 True
3 False
4 True
5 False
dtype: bool
删除重复数据
1. drop_duplicates()
方法
drop_duplicates()
方法用于删除 DataFrame 中的重复行。默认情况下,会删除所有重复行,只保留第一次出现的行。
# 删除重复行
df_no_duplicates = df.drop_duplicates()
print(df_no_duplicates)
输出:
A B0 1 a
1 2 b
3 3 c
4 4 d
2. subset
参数
subset
参数用于指定基于哪些列来检测重复项。
# 基于列 'A' 删除重复行
df_no_duplicates_A = df.drop_duplicates(subset=['A'])
print(df_no_duplicates_A)
输出:
A B0 1 a
1 2 b
3 3 c
4 4 d
3. keep
参数
keep
参数在 drop_duplicates()
方法中的用法与 duplicated()
方法相同。
# 使用 'last' 参数删除重复行
df_no_duplicates_last = df.drop_duplicates(keep='last')
print(df_no_duplicates_last)
输出:
A B1 2 b
3 3 c
5 4 d
示例代码
以下是一个完整的示例代码,展示了如何检测和删除 DataFrame 中的重复数据:
import pandas as pd
# 创建示例 DataFrame
df = pd.DataFrame({
'A': [1, 2, 2, 3, 4, 4], 'B': ['a', 'b', 'b', 'c', 'd', 'd']})
# 检测重复行
duplicates = df.duplicated()
print("检测重复行:")
print(duplicates)
# 删除重复行
df_no_duplicates = df.drop_duplicates()
print("\n删除重复行:")
print(df_no_duplicates)
# 基于列 'A' 删除重复行
df_no_duplicates_A = df.drop_duplicates(subset=['A'])
print("\n基于列 'A' 删除重复行:")
print(df_no_duplicates_A)
# 使用 'last' 参数删除重复行
df_no_duplicates_last = df.drop_duplicates(keep='last')
print("\n使用 'last' 参数删除重复行:")
print(df_no_duplicates_last)