Python pandas.DataFrame.duplicated函数方法的使用

DataFrame.duplicated 是 Pandas 中用于检测重复行的函数。它会返回一个布尔类型的 Series,其中 True 表示该行是重复的,False 表示该行是唯一的或首次出现。该函数主要用于数据清洗和重复数据的检测与处理。本文主要介绍一下Pandas中pandas.DataFrame.duplicated方法的使用。

DataFrame.duplicated(self,subset = None,keep ='first')

返回表示重复行的布尔Series,可以选择仅考虑某些列。

参数:

subse : 列标签或标签序列,可选

仅考虑某些列来标识重复项,默认情况下使用所有列

keep : {'first','last',False},默认为'first'

    first:将重复项标记True为第一次出现的除外。

    last:将重复项标记True为最后一次除外。

    False:将所有重复项标记为True。

返回

Series

例子

1)检测所有列的重复项

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 2, 3, 4, 4],
    'B': ['x', 'y', 'y', 'z', 'w', 'w']
})

# 检测重复项
duplicates = df.duplicated()
print(duplicates)

2)指定列检测重复项

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 2, 3, 4, 4],
    'B': ['x', 'y', 'y', 'z', 'w', 'w']
})

# 仅基于列 A 检测重复项
duplicates_subset = df.duplicated(subset=['A'])
print("指定列检测重复项(基于列 A):")
print(duplicates_subset)

3)标记所有重复项

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 2, 3, 4, 4],
    'B': ['x', 'y', 'y', 'z', 'w', 'w']
})

# 标记所有重复项
all_duplicates = df.duplicated(keep=False)
print("标记所有重复项:")
print(all_duplicates)

4)删除重复行

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 2, 3, 4, 4],
    'B': ['x', 'y', 'y', 'z', 'w', 'w']
})

# 删除重复行
df_unique = df[~df.duplicated()]
print("删除重复行后的 DataFrame:")
print(df_unique)

5)使用示例

import pandas as pd

# 创建 DataFrame
df = pd.DataFrame({
    'col1': ['one', 'one', 'two', 'two', 'two', 'three', 'four'],
    'col2': [1, 2, 1, 2, 1, 1, 1],
    'col3': ['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG']
}, index=['a', 'a', 'b', 'c', 'b', 'a', 'c'])

# DataFrame 例子print("所有列检测重复:\n", df.duplicated())
print("基于 'col1' 检测重复:\n", df.duplicated('col1'))
print("基于 'col1' 和 'col2' 检测重复:\n", df.duplicated(['col1', 'col2']))
print("基于 'col1',keep='last' 检测重复:\n", df.duplicated('col1', keep='last'))
print("索引重复检测,默认 keep='first':\n", df.index.duplicated())
print("重复索引行:\n", df[df.index.duplicated()])

# 创建 Series
s = pd.Series(['one', 'one', 'two', 'two', 'two', 'three', 'four'],
              index=['a', 'a', 'b', 'c', 'b', 'a', 'c'], name='sname')

# Series 例子print("\nSeries 重复检测:\n", s.duplicated())
print("根据索引检测 Series 重复:\n", s.index.duplicated())
推荐阅读
cjavapy编程之路首页