簡體   English   中英

熊貓:計算有條件的連續行

[英]Pandas: counting consecutive rows with condition

我有一張這樣的表:

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]

說明:當有新名稱或填充率增加時,'count' 列重置為 1; 否則,'count' 列等於最后一個值加 1。

使用循環很容易做到這一點,但我想避免這種情況,因為數據很大。 有沒有其他方法可以做到?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM