| 方法/操作 | 语法示例 | 描述 |
| 检测重复行 | df.duplicated() | 返回布尔序列标记重复行(首次出现的行标记为False) |
| 删除重复行 | df.drop_duplicates() | 保留首次出现的行(默认检查所有列) |
| df.drop_duplicates(subset=[‘col1’]) | 仅根据指定列去重 | |
| df.drop_duplicates(keep=’last’) | 保留最后一次出现的行 |
1. 检测重复行
import pandas as pd
# 创建包含重复数据的DataFrame
data = {
'Name': ['Alice', 'Bob', 'Alice', 'Charlie', 'Bob'],
'Age': [25, 30, 25, 35, 30],
'City': ['NY', 'LA', 'NY', 'SF', 'LA']
}
df = pd.DataFrame(data)
# 检测重复行(默认检查所有列)
print("重复行标记(False表示首次出现,True表示重复):")
print(df.duplicated())
输出:
| Plain Text 0 False 1 False 2 True 3 False 4 True dtype: bool |
2. 删除重复行
# 默认保留首次出现的行
df_unique = df.drop_duplicates()
print("去重后的DataFrame:")
print(df_unique)
输出:
| Plain Text Name Age City 0 Alice 25 NY 1 Bob 30 LA 3 Charlie 35 SF |
3. 按指定列去重
# 仅根据'Name'列去重(保留首次出现)
df_name_unique = df.drop_duplicates(subset=['Name'])
print("按Name列去重:")
print(df_name_unique)
输出:
| Plain Text Name Age City 0 Alice 25 NY 1 Bob 30 LA 3 Charlie 35 SF |
4. 保留最后一次出现的重复行
# 保留最后一次出现的行
df_last = df.drop_duplicates(keep='last')
print("保留最后一次出现的行:")
print(df_last)
输出:
| Plain Text Name Age City 2 Alice 25 NY 4 Bob 30 LA 3 Charlie 35 SF |
5. 综合案例:处理真实数据
# 加载包含重复值的数据(示例)
df_sales = pd.read_csv("sales_data.csv")
# 检查重复行数量
print("原始数据重复行数:", df_sales.duplicated().sum())
# 按'Order_ID'列去重,保留最后一次记录
df_clean = df_sales.drop_duplicates(subset=['Order_ID'], keep='last')
# 验证结果
print("去重后数据行数:", len(df_clean))
注意事项
- 性能优化:对大数据集去重时,可通过 subset 指定关键列以减少计算量。
- 逻辑一致性:确保 keep=’last’ 或 keep=False(删除所有重复)符合业务需求。
- 多列去重:subset=[‘col1’, ‘col2’] 可联合多列判断重复。
通过以上案例,可以灵活应对实际数据清洗中的重复值问题!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











请登录后查看评论内容