python - 如何计算熊猫中细胞不变的次数?
问题描述
使用以下数据:
A
false
false
false
false
true
false
false
true
true
true
我想生成以下输出:
A B
false 1
false 2
false 3
false 4
true 1
false 1
false 2
true 1
true 2
true 3
因此,在每次更改时,我都会重新启动计数器,然后只要内容没有更改就递增。
我可以用一个循环(伪代码)来做到这一点:
count = 0
current = df['A'][0]
for i in df['A'].index:
if df['A'][i] != current:
current = df['A'][i]
count = 0
df['B'][i] = ++count
但是由于循环会非常慢,因此是否有熊猫式的方法来实现这一点?
解决方案
你可以试试这个:
df['B'] = df.groupby(df.A.ne(df.A.shift()).cumsum()).cumcount()+1
A B
0 False 1
1 False 2
2 False 3
3 False 4
4 True 1
5 False 1
6 False 2
7 True 1
8 True 2
9 True 3
推荐阅读
- flutter - 如何在 Flutter 中使用工作管理器运行后台进程?
- javascript - 开玩笑无法模拟特定功能
- c# - 将数据网格中的数据发送到电子邮件地址的简单方法?
- javascript - 难以置信,相同的 Javascript 代码在 JSFiddle 中的行为方式不同
- javascript - 如何防止 TinyMCE 5 删除 \r\n
- javascript - 我的 for 循环在 javascript 中无法正常工作。它的迭代量少于应有的量
- typescript - 是否有任何选项可以更改 VSCode 中的自动实现 TypeScript 语言?
- sql - 查询两个表 - 返回不在两个表中的项目
- python - 使用python将句子中的每个单词替换为单词索引
- node.js - 必须提供 JWT - Delete 方法将令牌返回为 null 而不是用户令牌