首页 > 解决方案 > 删除重复项,但将一列的数据保留在新列中

问题描述

我有一个包含 2 列的数据框

Column1 Column2
A        1
B        1
A        2
B        2

我想删除第 1 列的重复项,但将已删除行的第 2 列的值保留在新列中

Column1 Column2 Column3
A        1       2
B        1       2

标签: pythonpandas

解决方案


使用groupby()+cumcount()跟踪位置,然后pivot()

df=(df.assign(key=df.groupby('Column1').cumcount())
      .pivot('Column1','key','Column2')
      .rename(columns=lambda x:f"Column{x+2}")
      .rename_axis(columns=None).reset_index())

或分 3 个步骤:

df['key']=df.groupby('Column1').cumcount()+2
df=df.pivot('Column1','key','Column2').add_prefix('Column')
df=df.rename_axis(columns=None).reset_index()

输出df

    Column1     Column2     Column3
0   A           1           2
1   B           1           2

推荐阅读