如何在Pandas数据表中实现重置式条件计数器?
实现Pandas条件计数器
可以通过分组标识+组内累加的方式实现这个需求,以下是具体步骤:
1. 构造示例数据
先还原你提供的数据集:
import pandas as pd data = { 'Week': ['01-2022', '02-2022', '03-2022', '04-2022', '05-2022', '06-2022'], 'A': [0.8, 0.6, 1.5, 0.6, 0.8, 0.8] } df = pd.DataFrame(data)
2. 生成分组键
以"A列数值大于1"作为分组分割点,用cumsum()生成连续的分组ID:
df['group'] = (df['A'] > 1).cumsum()
这一步会把每一个"A>1"的行作为新分组的起点,后续行归为同一组,直到下一个"A>1"的行出现。
3. 计算组内累加并重置
对每个分组内的行进行累加计数,再把"A>1"的行的计数器设为0:
# 组内从1开始累加计数 df['counter'] = df.groupby('group').cumcount() + 1 # 将A>1的行的计数器重置为0 df['counter'] = df['counter'].mask(df['A'] > 1, 0)
最终结果
执行后的数据表如下:
| Week | A | group | counter |
|---|---|---|---|
| 01-2022 | 0.8 | 0 | 1 |
| 02-2022 | 0.6 | 0 | 2 |
| 03-2022 | 1.5 | 1 | 0 |
| 04-2022 | 0.6 | 1 | 1 |
| 05-2022 | 0.8 | 1 | 2 |
| 06-2022 | 0.8 | 1 | 3 |
这个counter列就是你需要的条件计数器结果。
内容的提问来源于stack exchange,提问作者ps2341
相关产品推荐
相关产品推荐

