python - 使用唯一的值更改重复项
问题描述
我想用唯一的值替换重复的值。例如,让我们取一个数据框 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
由删除重复项创建的系列使用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
为:col2
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
推荐阅读
- android - 如何更改preferences.xml 的默认主题?
- php - 如何在 XAMPP (HY000/2054) 上使用 phpMyAdmin 修复“无法连接:无效设置”
- python-3.x - 使用 Python reqeuest 方法在网站上停留一段时间
- c - 为什么代码打印与获取字符一样多
- python - 如何使用点积计算权重的梯度下降成本?
- log4j - log4j.properties 对登录 activeJDBC 没有影响
- android - 带有 android 即时应用程序的慢速 webview
- python - 使用 pandas 将 Q1-Q4 期间字符串转换为日期时间
- sql - 根据表行中存在的列名连接 2 个表
- javascript - 为什么我的 API 数据中会显示 HTML 标签?