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

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

duplicates 重复 DataFrame 删除 698    来源:    2025-03-13

在Pandas中,删除DataFrame中完全相同的行可以通过drop_duplicates()方法来实现。这个方法会返回一个新的DataFrame,其中删除了所有重复的行。默认情况下,drop_duplicates()会保留第一次出现的行,删除后续的重复行。

基本用法

import pandas as pd

# 创建一个示例DataFrame
data = {
    'A': [1, 2, 2, 3, 4],
    'B': [5, 6, 6, 7, 8],
    'C': [9, 10, 10, 11, 12]
}

df = pd.DataFrame(data)

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

print(df_no_duplicates)

输出结果

   A  B   C
0  1  5   9
1  2  6  10
3  3  7  11
4  4  8  12

参数说明

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

示例:根据特定列去重

# 只根据列'A'和'B'来删除重复行
df_no_duplicates = df.drop_duplicates(subset=['A', 'B'])

print(df_no_duplicates)

示例:保留最后一次出现的重复行

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

print(df_no_duplicates)

示例:删除所有重复行

# 删除所有重复行
df_no_duplicates = df.drop_duplicates(keep=False)

print(df_no_duplicates)

示例:原地修改DataFrame

# 原地修改DataFrame
df.drop_duplicates(inplace=True)

print(df)

总结

drop_duplicates()是一个非常高效的方法,可以快速删除DataFrame中的重复行。通过合理使用subsetkeepinplace参数,你可以灵活地控制去重的行为。