Python 将副本更改为唯一副本';s值

Python 将副本更改为唯一副本';s值,python,pandas,numpy,Python,Pandas,Numpy,我想用唯一值替换重复的值。例如, 让我们看一个数据帧df col1 col2 A 1 B 2 C 2 A 3 A 4 在本例中,col1在col2中具有不同或相同值的A的副本。我想用唯一的col2的值替换副本,如下所示 col1 col2 A 1 B 2 C 2 A 1 A 1 请帮我整理一下。提前感谢。使用由删除的重复项创建的系列: 另一个想法是使用-将组的第一个值复制到每个组的所有值: df['col2']

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

col1 col2
A     1
B     2
C     2
A     3
A     4
在本例中,col1col2中具有不同或相同值的A的副本。我想用唯一的col2的值替换副本,如下所示

col1 col2
A     1
B     2
C     2
A     1
A     1
请帮我整理一下。提前感谢。

使用由删除的重复项创建的系列:

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

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

编辑:

如果需要将所有重复行替换为
col2
中的
col1
1

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

将列1与列1重复的值替换为列2的值

>>> df['col2'] = pd.np.where(df['col1'].duplicated(), 1, df['col2'])

因此,需要通过
1
值或重复的第一个值重新计算所有重复项-因为
A
的第一个值是
1
,然后通过
1
?@jezrael重新计算所有值,因为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
>>> df['col2'] = pd.np.where(df['col1'].duplicated(), 1, df['col2'])