python - 在列中添加具有累积唯一值计数的列
问题描述
我正在尝试添加一个包含唯一值出现数量的列,所以如果我的输入是:
id | score
asd 15
asd 20
jk 76
pz 54
pz 37
我想添加这样的列
id | score | count_ids
asd 15 1
asd 20 1
jk 76 2
pz 54 3
pz 37 3
我已经看过这个答案Pandas add unique count column,尽管我觉得应该有一个更简洁的解决方案。
编辑
我也在寻找一个可扩展的解决方案,例如,如果我也有这个:
id | game | score
asd 1 15
asd 2 20
jk 1 76
pz 1 54
pz 1 37
得到
id | game | score | count_users
asd 1 15 1
asd 2 20 2
jk 1 76 3
pz 1 54 4
pz 1 37 4
解决方案
我认为解决方案应该在没有帮助列的情况下简化:
df['count_ids'] = df['id'].ne(df['id'].shift()).cumsum()
print (df)
id score count_ids
0 asd 15 1
1 asd 20 1
2 jk 76 2
3 pz 54 3
4 pz 37 3
编辑:对于多列解决方案是相似的,只为每行添加DataFrame.any
至少一个测试:True
df['count_ids'] = df[['id', 'game']].ne(df[['id', 'game']].shift()).any(axis=1).cumsum()
print (df)
id game score count_ids
0 asd 1 15 1
1 asd 2 20 2
2 jk 1 76 3
3 pz 1 54 4
4 pz 1 37 4
详情:
print (df[['id', 'game']].ne(df[['id', 'game']].shift()))
id game
0 True True
1 False True
2 True True
3 True False
4 False False
推荐阅读
- reactjs - how to get back value select in react-select Async
- html - Wrap an Image with transparent image without using position:absolute , top ,left ,right and bottom
- java - Optional OneToOne relation in Hibernate
- c++ - GDB:同时调试2个进程
- android - Cannot intercept touch on overlay service
- mysql - MYSQL在一分钟内发现重复
- .net - 运行时创建不同的 EDMX 模型
- python - 在 Python 中创建不可变对象
- flutter - 我不能使用 Icon(Icons.star, color: Colors.green[500]),错误
- wordpress - 单击后可以从 $_SESSION 存储值