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

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

DataFrame 重复 unique duplicates 364    来源:    2025-03-14

在Pandas中,你可以使用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_unique = df.drop_duplicates()

print(df_unique)

参数说明

  • subset: 指定要考虑的列,默认是考虑所有列。如果你只想根据某些列去重,可以传递一个列名的列表。
  • keep: 指定保留哪个重复的行。默认是'first',表示保留第一个出现的重复行;'last'表示保留最后一个出现的重复行;False表示删除所有重复的行。
  • inplace: 如果设置为True,则直接在原始DataFrame上进行修改,不返回新的DataFrame。

示例:根据特定列去重

# 只根据列'A'和'B'去重
df_unique = df.drop_duplicates(subset=['A', 'B'])

print(df_unique)

示例:删除所有重复的行

# 删除所有重复的行,不保留任何重复的行
df_unique = df.drop_duplicates(keep=False)

print(df_unique)

示例:直接在原始DataFrame上修改

# 直接在原始DataFrame上删除重复的行
df.drop_duplicates(inplace=True)

print(df)

性能优化

  • 如果你处理的数据量非常大,可以考虑使用ignore_index=True参数来重置索引,这可能会提高性能。
  • 如果你知道某些列是唯一的,可以使用subset参数来减少比较的列数,从而提高性能。
# 重置索引
df_unique = df.drop_duplicates(ignore_index=True)

print(df_unique)

通过这些方法,你可以高效地删除Pandas DataFrame中完全相同的行。