【问题标题】:Identify records with duplicate values in a specified column using pandas使用 pandas 识别指定列中具有重复值的记录
【发布时间】:2017-07-17 21:01:44
【问题描述】:

我是 Python 和 Pandas 的新手。 我正在清理一个包含 50,000 台设备(50,000 行和 10 列)的数据文件。 每条记录的一列 ('UNITNUMBER') 应该是唯一的。但是有重复,我正在尝试生成两个数据框:一个包含 UNITNUMBER 唯一的所有记录,第二个包含 UNITNUMBER 在另一条记录中重复的所有记录。

下面生成一个序列,其中 UNITNUMBER 是索引,True 表示重复,False 表示唯一。 MData=pd.read_excel(MFile,MFileTab, skiprows=0) DupSeries=(MData.UNITNUMBER.value_counts()>1)

下面生成一个系列,其中每个设备有一个记录,顺序与原始 DataFrame 相同,索引是 UNITMASTER 值,系列值是 True 或 False。 DupSeries[MROData['UNITNUMBER']]

我预料到了

MData[DupSeries[MData['UNITNUMBER']]]

将产生 MData 中 UNITNUMBER 重复的所有记录,但我收到警告和错误:

用户警告:布尔系列键将被重新索引以匹配 DataFrame 索引。

ValueError: 无法从重复的轴重新索引

简而言之,我无法弄清楚语法。请帮忙。如果有的话,我很乐意使用完全不同的方法。

【问题讨论】:

    标签: python pandas duplicates


    【解决方案1】:
    MDuplicates = MData.loc[MData.duplicated('UNITNUMBER', keep=False)]
    MUnique = MData.drop_duplicates('UNITNUMBER', keep='first')
    

    【讨论】:

    • MData.loc[DupSeries] 似乎不起作用。IndexingError: Unalignable boolean Series 作为索引器提供(布尔系列和索引对象的索引不匹配
    • 请注意,DupSeries 中的记录比 MData 少,因为 DupSeries 只有一条重复 UNITNUMBER 的记录,而 MData 有多个重复 UNITNUMBER 的记录。
    • MDuplicates = MData.duplicated('UNITNUMBER', keep=False) 也不起作用。它只返回一个以递增整数(行号)为索引的系列,指示 MData 中的该记录是否具有重复的 UNTNUMBER。对于每条具有重复 UNITNUMBER 的记录,我需要 MData 中的所有列。
    猜你喜欢
    • 2022-12-01
    • 1970-01-01
    • 2020-11-10
    • 2020-04-08
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多