python - 如何计算熊猫数据框的两个值之间的行数?
问题描述
我有一个看起来像这样的列:
旗帜 |
---|
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
我想计算/求和两个 0 之间的行数,结果如下:
旗帜 | 数数 |
---|---|
0 | 5 |
1 | 5 |
1 | 5 |
1 | 5 |
1 | 5 |
0 | 1 |
0 | 4 |
1 | 4 |
1 | 4 |
1 | 4 |
我怎么得到这个?我已经尝试过 Pandas 中提到的解决方案- 在另一列中的值之间求和一列中的值这与我需要的非常相似,但我无法修改它以适应我的输出。
解决方案
使用cumsum创建标志为 0 的组。然后groupby 转换大小以获取组大小:
import pandas as pd
df = pd.DataFrame({
'flag': {0: 0, 1: 1, 2: 1, 3: 1, 4: 1, 5: 0, 6: 0, 7: 1, 8: 1, 9: 1}
})
# Create Group IDs based on where 0s are
groups = df.flag.eq(0).cumsum()
# Groupby groups and transform each group to the size
df['Count'] = df.groupby(groups)['flag'].transform('size')
print(df)
df
:
flag Count
0 0 5
1 1 5
2 1 5
3 1 5
4 1 5
5 0 1
6 0 4
7 1 4
8 1 4
9 1 4
推荐阅读
- security - 在 Quarkus 中记录身份验证失败
- javascript - 如何将数组从 XMLHTTPREQUEST API POST 保存到 Laravel 控制器
- javascript - 如何将数据从 C# 文本框发送到 HTML 文本框?
- swift - 在范围列表中查找子范围
- python - Scrapy MySQL 管道
- linux - DPDK 应用程序测试管道在 app_ports_check_link 中失败
- python - 根据 if 条件合并和求和两个 pandas 行
- javascript - 用箭头反应 js react-router
- javascript - GA 集成的页面权重检查
- solver - Dymola 中的证明求解器