Pandas:使用条件计数连续行

2024-04-26 05:10:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张这样的桌子:

name = ['a','a','a','a','a','b','b','b','b']
fillrate = [0.1, 0.1, 0.2, 0.1, 0.1, 0.3, 0.3, 0.3, 0.4]
df = pd.DataFrame(name)
df.columns = ['name']
df['fillrate'] = fillrate

我想创建如下列:

df['count'] = [1,2,1,2,3,1,2,3,1]

说明:“计数”列在有新名称或填充率增加时重置为1;否则,“count”列等于最后一个值加1

使用循环很容易做到,但我想避免这种情况,因为数据量很大。有没有别的办法呢


Tags: columnsname名称dataframedfcount情况重置
1条回答
网友
1楼 · 发布于 2024-04-26 05:10:04

IIUC让我们将shiftdiff结合起来,并使用cumsum创建子组cumcount

s=(df.name.ne(df.name.shift()) | df.fillrate.diff().gt(0)).cumsum()
s.groupby(s).cumcount()+1
Out[17]: 
0    1
1    2
2    1
3    2
4    3
5    1
6    2
7    3
8    1
dtype: int64

相关问题 更多 >