首页 > 解决方案 > 使用唯一的值更改重复项

问题描述

我想用唯一的值替换重复的值。例如,让我们取一个数据框 df

col1 col2
A     1
B     2
C     2
A     3
A     4

在这个col1中,A 的重复项在col2中具有不同或相同的值。我想要的是用唯一的col2的值替换重复项,如下所示,

col1 col2
A     1
B     2
C     2
A     1
A     1

请帮我整理一下。提前致谢。

标签: pythonpandasnumpy

解决方案


Series.map由删除重复项创建的系列使用DataFrame.drop_duplicates

df['col2'] = df['col1'].map(df.drop_duplicates('col1').set_index('col1')['col2'])

另一个想法是使用GroupBy.first- 将组的第一个值复制到每个组的所有值:

df['col2'] = df.groupby('col1')['col2'].transform('first')

print (df)
  col1  col2
0    A     1
1    B     2
2    C     2
3    A     1
4    A     1

编辑:

如果需要将所有重复行替换col1为:col21

df.loc[df['col1'].duplicated(keep=False), 'col2'] = 1
print (df)
  col1  col2
0    A     1
1    B     2
2    C     2
3    A     1
4    A     1

变化数据中最明显的差异:

print (df)
  col1  col2
0    A     5
1    B     4
2    C     2
3    A     3
4    C     4

df['col2'] = df['col1'].map(df.drop_duplicates('col1').set_index('col1')['col2'])
print (df)
  col1  col2
0    A     5
1    B     4
2    C     2
3    A     5
4    C     2

df.loc[df['col1'].duplicated(keep=False), 'col2'] = 1
print (df)
  col1  col2
0    A     1
1    B     4
2    C     1
3    A     1
4    C     1

推荐阅读