【问题标题】:Pandas Identify duplicate records, create a new column and add the ID of first occurrencePandas 识别重复记录,创建新列并添加第一次出现的 ID
【发布时间】:2020-12-22 11:26:27
【问题描述】:

我是python新手,请多多包涵:)

假设有一个这样的数据框

ID       B        C       D        E        isDuplicated
1       Blue     Green   Blue     Pink           false
2       Red      Green   Red      Green          false
3       Red      Orange  Yellow   Green          false
4       Blue     Pink    Blue     Pink           false
5       Blue     Orange  Pink     Green          false
6       Blue     Orange  Pink     Green          true
7       Red      Orange  Yellow   Green          true
8       Red      Orange  Yellow   Green          true

如果我在子集 = B、C、D、E 的行中有重复项。 然后我想添加另一列'firstOccurred',它应该具有第一次出现的ID。 我想要的数据框应该是这样的:

ID       B        C       D        E        isDuplicated        firstOccurred
1       Blue     Green   Blue     Pink           false                         
2       Red      Green   Red      Green          false
3       Red      Orange  Yellow   Green          false
4       Blue     Pink    Blue     Pink           false
5       Blue     Orange  Pink     Green          false
6       Blue     Orange  Pink     Green          true               5
7       Red      Orange  Yellow   Green          true               3
8       Red      Orange  Yellow   Green          true               3

如果有任何帮助,我将不胜感激! 提前谢谢!

【问题讨论】:

    标签: python-3.x pandas dataframe duplicates


    【解决方案1】:

    仅将GroupBy.transformfirst 一起用于True 传入numpy.where 的roww:

    df['firstOccurred'] = np.where(df['isDuplicated'], 
                                   df.groupby(['B','C','D','E'])['ID'].transform('first'), 
                                   np.nan)
    print (df)
       ID     B       C       D      E  isDuplicated  firstOccurred
    0   1  Blue   Green    Blue   Pink         False            NaN
    1   2   Red   Green     Red  Green         False            NaN
    2   3   Red  Orange  Yellow  Green         False            NaN
    3   4  Blue    Pink    Blue   Pink         False            NaN
    4   5  Blue  Orange    Pink  Green         False            NaN
    5   6  Blue  Orange    Pink  Green          True            5.0
    6   7   Red  Orange  Yellow  Green          True            3.0
    7   8   Red  Orange  Yellow  Green          True            3.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-22
      • 2019-12-18
      • 2018-10-04
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多