python - 使用重复值来增加列
问题描述
我有一个 Pandas 数据框,我想根据重复值的数量增加一列。因此,当找到重复项时,所有其他出现的次数都会增加。所以给定这个输入数据框
SM
0 AB
1 AC
2 AD
3 AB
4 AB
5 AC
6 AE
7 AD
返回
SM DM
0 AB AB
1 AC AC
2 AD AD
3 AB AB_1
4 AB AB_2
5 AC AC_1
6 AE AE
7 AD AD_1
我尝试了这行代码,但我不知道如何递增
np.where(a.SM.duplicated(keep='first'), a.SM+'_1', a.SM)
解决方案
使用groupby.cumcount
和Series.where
:
s = df.groupby('SM').cumcount()
df['DM'] = df['SM'].where(s.eq(0), df['SM'] + '_' + s.astype(str))
[出去]
SM DM
0 AB AB
1 AC AC
2 AD AD
3 AB AB_1
4 AB AB_2
5 AC AC_1
6 AE AE
7 AD AD_1
推荐阅读
- php - 在 laravel 请求中上传文件并验证多维数组数据类型
- authentication - 为asp net core 5的两个面板授权Cookie
- postgresql - 将 time 属性设置为 postgis 几何的 m 维或单独的属性
- python - 如何使用 django 计算天数的余额利息
- python - 从数据框中提取值列表
- html - div class="list-group" 在 bootstrap4 上不起作用
- html - 为什么检测到 ::before 和 ::after 伪元素但未在 Chrome 中显示?
- bootstrap-4 - 如何使用 bootstrap-4 以自定义设计在电子邮件正文中发送消息?
- amazon-web-services - Aws 发现实例中断
- javascript - 调用时转换原始数据,再次调用函数时无法使用原始数据