【问题标题】:How to work with duplicate entries in Pandas Data Frame?如何处理 Pandas Dataframe 中的重复条目?
【发布时间】:2015-09-21 14:56:52
【问题描述】:

我有一个包含以下条目的 df

ID            FIRST_NAME    FIRST_SUBJECT     SECOND_SUBJECT
A2035559    Sometsdf        Science
A2035559    Sometsdf        ENGINEERING
A20340619   Nsdsjes         MATHS
A20340619   Nsdsjes         SCIENCE

我想通过“ID”列识别重复行并删除重复行,但将“FIRST_SUBJECT”从已删除行移动到原始行的“SECOND_SUBJECT”列。所以我有这个。

ID            FIRST_NAME    FIRST_SUBJECT     SECOND_SUBJECT
A2035559    Sometsdf        Science            ENGINEERING
A20340619   Nsdsjes         MATHS              SCIENCE

这对我来说似乎很棘手,我首先尝试按“ID”对数据帧进行排序,但我所有的 ID 都以“A”开头,所以这不起作用。我该如何实现这一目标?

我有另一个想法,我正在尝试,

我创建了 dataFrame 的两个副本,df1 和 df2。因为,我最多只有一个副本(即同一行的两个副本),我通过分别取 df1 和 df2 中的最后一个和第一个来删除重复项,然后尝试合并两者。

  df1 = df.drop_duplicates('ID' , take_last=False)
  df2 = df.drop_duplicates('ID' , take_last=True)

  df1['SECOND_SUBJECT'] = df2['FIRST_SUBJECT']

这行得通吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我并不是真正的 Python 或 pandas 开发人员,所以不要将其视为“正确”的方式(我确定不是 - 我对第一/第二主题的这种方法持怀疑态度,而不是到更通用的映射模式)- 这不能很好地扩展到 3 个以上的主题。

    data = {
        'ID': ['A2035559', 'A20340619', 'A2035559', 'A20340619'],
        'FIRST_NAME': ['Sometsdf', 'Nsdsjes', 'Sometsdf', 'Nsdsjes'],
        'FIRST_SUBJECT': ['SCIENCE', 'MATHS', 'ENGINEERING', 'SCIENCE'],
        'SECOND_SUBJECT': [None, None, None, None]
    }
    
    d = pandas.DataFrame(data=data, columns=['ID', 'FIRST_NAME', 'FIRST_SUBJECT', 'SECOND_SUBJECT'])
    
    dup_first = d.drop_duplicates(subset=['ID'], take_last=True)
    dup_last = d.drop_duplicates(subset=['ID'], take_last=False)
    
    for row in dup_last['ID']:
        dup_first.loc[dup_first['ID'] == row, 'SECOND_SUBJECT'] = dup_last.loc[dup_last['ID'] == row, 'FIRST_SUBJECT'].values[0]
    
    dup_first
    

    生产

    ID         FIRST_NAME  FIRST_SUBJECT  SECOND_SUBJECT
    A2035559   Sometsdf    ENGINEERING    SCIENCE
    A20340619  Nsdsjes     SCIENCE        MATHS
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      • 2018-02-04
      • 2018-05-19
      • 2011-03-09
      • 2014-07-16
      • 2017-08-03
      相关资源
      最近更新 更多