【问题标题】:Special remove duplicates from dataframe从数据框中特殊删除重复项
【发布时间】:2020-05-08 08:11:04
【问题描述】:

我正在尝试删除重复的行,但有一些特殊情况。 输入数据如下: 我想删除重复的行。我必须比较所有列,因此我必须根据 CODE 对数据框进行排序,因此我可以比较行。如果单元格值相同(在比较列 CITY 时必须忽略大小写)并且如果 COMPANY 列同时具有 BELL 和 MAS,那么我必须选择带 BELL。谢谢。

NAME    CODE   STATE   CITY       COMPANY
abc     109    TN      Trichy     BELL
abc     109    TN      Salem      MAS
pen     9      TN      Mdu        BELL
pen     9      TN      MDU        MAS
hat     10     TN      Karur      MAS
mat     89     TN      Hosur      MAS
mat     89     TN      Hosur      BELL
paper   77     TN      Nyl        BELL
stone   98     TN      Nyl        BELL
stone   98     TN      Nyl        MAS

预期结果:

NAME    CODE   STATE   CITY       COMPANY
abc     109    TN      Trichy     BELL
abc     109    TN      Salem      MAS
pen     9      TN      Mdu        BELL
hat     10     TN      Karur      MAS
mat     89     TN      Hosur      BELL
paper   77     TN      Nyl        BELL
stone   98     TN      Nyl        BELL

【问题讨论】:

    标签: python-3.x dataframe duplicates


    【解决方案1】:

    您可以尝试以下步骤:

    1. 将 CITY 列转换为小写

    2. 根据 COMPANY 对数据进行排序(考虑到您需要 保留 BELL 一个)

    3. 根据除 COMPANY 以外的其他列删除重复项

      data.CITY =data.CITY.str.lower()
      data.sort_values(by='COMPANY',inplace=True)
      data.drop_duplicates(subset=['NAME','CODE','STATE','CITY'],keep="first")
      

    希望对你有帮助。

    【讨论】:

    • 谢谢。 COMPANY 栏中有一些空白。我也不想删除这些行。当我排序时,我遇到了一些错误。如何处理这个。 data.sort_values(by='COMPANY',inplace=True)
    • @Lilly 你可以使用.fillna 方法来填充空白值
    猜你喜欢
    • 2023-03-25
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多