python - 当列具有非零值时重置计数器
问题描述
我有一个带有列的数据框。
A
0.0
0.0
0.0
12.0
0.0
0.0
34.0
0.0
0.0
0.0
0.0
11.0
我想要这样的输出带有一个计数器列。我希望计数器在非零值后重新启动。对于每个非零值之后的行,计数器应再次初始化,然后应递增。
A Counter
0.0 1
0.0 2
0.0 3
12.0 4
0.0 1
0.0 2
34.0 3
0.0 1
0.0 2
0.0 3
0.0 4
11.0 5
解决方案
让我们尝试cumsum
创建groupby
密钥,[::-1]
这里是相反的顺序
df['Counter'] = df.A.groupby(df.A.ne(0)[::-1].cumsum()).cumcount()+1
Out[442]:
0 1
1 2
2 3
3 4
4 1
5 2
6 3
7 1
8 2
9 3
10 4
11 5
dtype: int64
推荐阅读
- spring-boot - JPA CriteriaSepcification IN 子句
- postgresql - otj-pg-embedded > Embedded PostgreSQL > 错误:“PROCEDURE”处或附近的语法错误
- typescript - 打字稿条件动态模型类型声明
- r - 如何合并随时间变化的变量 [R]
- mongodb - mongo db 错误 - SyntaxError: missing ; 声明之前
- r - Rstudio 拥有 Excelfile 权限 - XLconnect
- apache-spark - Spark SQL 中的 ORDER BY 与 SORT BY
- javascript - 如何在ts中将值动态设置为数组中的对象
- java - Spring Boot 发送邮件 API REST
- c# - 已解决 ITextSharp:当行不适合第一页时,如何处理表格不进入下一页