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
在本例中,col1在col2中具有不同或相同值的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'])