python - 使用唯一值更改重复项

标签 python pandas numpy

我想用唯一的值替换重复的值。例如, 让我们拿一个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

编辑:

如果需要将col2col1的所有重复行替换为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/

相关文章:

python - 将行添加到数据框以统一组的长度

python - 列表理解几个框架

python - 使用 Pycurl 获取 HTML

python - 用 Pandas 延迟加载 csv

python - 如何展平多级/嵌套 JSON?

python - 当元素包含 numpy 数组时,无法测试 python 列表元素成员资格

python - scikit-learn 中的 "ValueError: could not convert string to float"错误

python - 如何在 python 中规范化 vector ?

python - 为什么在 Windows 服务中启动的 Python 线程会在 3 - 4 分钟后关闭?

python - dir() 和 __dir__ 有什么区别?