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

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

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

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

基本用法

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: 可选参数,指定要考虑的列。默认情况下,drop_duplicates() 会考虑所有列。如果你只想根据某些列来去除重复行,可以传递这些列名作为 subset 参数。

    df_unique = df.drop_duplicates(subset=['A', 'B'])
    
  • keep: 可选参数,指定保留哪个重复行。默认值为 'first',表示保留第一个出现的重复行;'last' 表示保留最后一个出现的重复行;False 表示删除所有重复行。

    df_unique = df.drop_duplicates(keep='last')
    
  • inplace: 可选参数,如果设置为 True,则直接在原DataFrame上进行修改,而不是返回一个新的DataFrame。

    df.drop_duplicates(inplace=True)
    

示例

import pandas as pd

# 创建一个示例DataFrame
data = {
    'A': [1, 2, 2, 3, 3],
    'B': [4, 5, 5, 6, 6],
    'C': [7, 8, 8, 9, 9]
}
df = pd.DataFrame(data)

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

print("原始DataFrame:")
print(df)
print("\n去除重复行后的DataFrame:")
print(df_unique)

输出

原始DataFrame:
   A  B  C
0  1  4  7
1  2  5  8
2  2  5  8
3  3  6  9
4  3  6  9

去除重复行后的DataFrame:
   A  B  C
0  1  4  7
1  2  5  8
3  3  6  9

总结

  • drop_duplicates() 是Pandas中去除重复行的标准方法。
  • 可以通过 subset 参数指定要考虑的列。
  • 可以通过 keep 参数控制保留哪个重复行。
  • 使用 inplace=True 可以直接修改原DataFrame。

这种方法在处理大数据集时非常高效,是去除重复行的首选方法。