pandas - 计算数据框中数字连续出现的次数
问题描述
我有一个包含 1 和 0 的虚拟列的数据框,我想为每一行计算 1 或 0 出现的次数,每次从 0 开始,向上计数为 1,向下计数为 0 我有下面的一个例子:
import pandas as pd
df = pd.DataFrame({'Dummy': [0, 0, 1, 1, 1, 0, 1, 1, 1, 1],
'Counter': [-1, -2, 1, 2, 3, -1, 1, 2, 3, 4]})
解决方案
我们试试看:
blocks = df.Dummy.diff().ne(0).cumsum()
counters = df.groupby(blocks).cumcount() + 1
df['Counter'] = np.where(df['Dummy']==0, -1, 1) * counters
输出:
Dummy Counter
0 0 -1
1 0 -2
2 1 1
3 1 2
4 1 3
5 0 -1
6 1 1
7 1 2
8 1 3
9 1 4
推荐阅读
- c# - PostSharp中的父属性设置拦截
- tfs - 我有现有的团队项目(TFS 2018)我想知道使用了哪个流程模板
- php - 使用 array_column 将两列连接为一列
- python - 如何使用 QProcess 运行 jar 文件
- java - 查看冗余依赖项
- asp.net - 错误:仅允许直接在包含内容控件的内容页面中使用内容控件。在页面布局 SharePoint 2016
- spring - 为什么项目 pom.xml 显示此 Non-Resolvable 错误
- security - 我们可以加密必须用任何私钥和服务器生成位解密的数据吗?
- javascript - react JS中条件渲染的过渡
- sql - Postgres 约束和外键