我想用唯一的值替换重复的值。例如,
让我们拿一个dataframe 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
请帮我整理一下。提前致谢。
最佳答案
使用Series.map
by 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
编辑:
如果需要将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
关于python - 使用唯一值更改重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57686516/