插件窝 干货文章 Pandas数据去重:如何高效删除DataFrame中完全相同的行?

Pandas数据去重:如何高效删除DataFrame中完全相同的行?

duplicates DataFrame 使用 可以 87    来源:    2025-03-15

在Pandas中,删除DataFrame中完全相同的行可以使用drop_duplicates()方法。这个方法会返回一个去重后的DataFrame,而不改变原始DataFrame。如果你希望直接在原始DataFrame上进行修改,可以使用inplace=True参数。

基本用法

import pandas as pd

# 示例DataFrame
data = {
    'A': [1, 2, 2, 3],
    'B': [4, 5, 5, 6],
    'C': [7, 8, 8, 9]
}

df = pd.DataFrame(data)

# 删除完全相同的行
df_no_duplicates = df.drop_duplicates()

print(df_no_duplicates)

参数说明

  • subset: 指定要考虑的列,默认是考虑所有列。
  • keep: 指定保留哪个重复行。可选值为:
    • 'first'(默认):保留第一个出现的重复行。
    • 'last':保留最后一个出现的重复行。
    • False:删除所有重复行。
  • inplace: 如果为True,则直接在原始DataFrame上进行修改,不返回新的DataFrame。

示例:指定列去重

如果你只想根据某些列进行去重,可以使用subset参数:

df_no_duplicates = df.drop_duplicates(subset=['A', 'B'])

示例:保留最后一个重复行

df_no_duplicates = df.drop_duplicates(keep='last')

示例:直接修改原始DataFrame

df.drop_duplicates(inplace=True)

性能优化

对于非常大的DataFrame,去重操作可能会比较耗时。可以考虑以下优化方法: 1. 使用sort_values():在去重之前对DataFrame进行排序,可能会提高去重效率。 2. 使用groupby():在某些情况下,使用groupby()结合first()last()方法也可以实现去重。

df_no_duplicates = df.sort_values(by=['A', 'B']).drop_duplicates()

总结

drop_duplicates()是Pandas中用于删除DataFrame中完全相同的行的常用方法。通过合理使用其参数,可以灵活地控制去重行为,并且可以通过一些优化手段提高去重效率。