【问题标题】:Pandas replacing values of duplicated ID with values of the first occurrence熊猫用第一次出现的值替换重复 ID 的值
【发布时间】:2021-08-14 05:43:07
【问题描述】:

假设我有以下数据框:

df = pd.DataFrame({"ID":['1','4','2','3','4','3','4'],"Color":['Green','Org','Yellow','B','Orange','Blue','Orange']})

我想要做的是用重复的 ['ID'] 替换记录的 col ['Color'] 中的值。在第一次出现 ['ID'] 时,必须将 ['Color'] 值替换为 ['Color'] 值。 这样上面的数据框就会产生以下结果:

df = pd.DataFrame({"ID":['1','4','2','3','4','3','4'],"Color":['Green','Org','Yellow','B','Org','B','Org']})

如您所见,例如,“Orange”已替换为“Org”,因为这是第一次出现 ['ID']= '4' 时的 ['Color'] 值

原始数据集是 (8M,140),因此我不能删除重复数据,因为我会丢失重要数据。我很难找到一个基本链接duplicated() 和replace() 的逻辑。我已经搜索了互联网,但我能找到的只是用 NaN 或相同值替换重复项的解决方案。如果我错过了解决此问题的帖子,请指导我。

提前感谢您的时间和帮助。

【问题讨论】:

    标签: python pandas duplicates


    【解决方案1】:

    您可以使用duplicated 提取第一个匹配项,然后使用map

    s = ~df.ID.duplicated()
    df['Color'] = df.ID.map(df[s].set_index('ID')['Color'])
    

    输出:

      ID   Color
    0  1   Green
    1  4     Org
    2  2  Yellow
    3  3       B
    4  4     Org
    5  3       B
    6  4     Org
    

    【讨论】:

      猜你喜欢
      • 2019-02-05
      • 2023-01-26
      • 2019-02-20
      • 2018-08-24
      • 2018-11-16
      • 2022-08-16
      • 2023-03-06
      • 2017-05-06
      • 2018-11-04
      相关资源
      最近更新 更多