插件窝 干货文章 如何高效去除Pandas DataFrame中完全重复的行?

如何高效去除Pandas DataFrame中完全重复的行?

重复 DataFrame duplicates 去除 289    来源:    2025-03-15

在Pandas中,你可以使用drop_duplicates()方法来高效地去除DataFrame中完全重复的行。这个方法会返回一个新的DataFrame,其中删除了所有重复的行。

基本用法

import pandas as pd

# 假设你有一个DataFrame
df = pd.DataFrame({
    'A': [1, 2, 2, 3],
    'B': [4, 5, 5, 6],
    'C': [7, 8, 8, 9]
})

# 去除完全重复的行
df_unique = df.drop_duplicates()

print(df_unique)

参数说明

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

示例

# 只考虑列'A'和'B'来去除重复行
df_unique_subset = df.drop_duplicates(subset=['A', 'B'])

# 保留最后一个出现的重复行
df_unique_last = df.drop_duplicates(keep='last')

# 直接在原DataFrame上修改
df.drop_duplicates(inplace=True)

性能考虑

  • drop_duplicates()方法在内部使用了哈希表来检测重复行,因此它的时间复杂度通常是O(n),其中n是DataFrame的行数。
  • 如果你只需要去除部分列的重复行,使用subset参数可以减少计算量。

总结

使用drop_duplicates()方法可以高效地去除Pandas DataFrame中完全重复的行。根据你的需求,你可以通过调整subsetkeepinplace参数来定制去重行为。