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())