DataFrame.duplicated(self,subset = None,keep ='first')
返回表示重复行的布尔Series,可以选择仅考虑某些列。
参数: | subse : 列标签或标签序列,可选 仅考虑某些列来标识重复项,默认情况下使用所有列 keep : 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())