[英]How to count the number of times a condition consecutively exists across rows in a column in pandas
我有一個像這樣的簡單 df:
data
0 0
1 0
2 1
3 1
4 0
5 0
6 1
7 1
8 1
9 1
我有興趣計算1
連續出現的次數,然后創建一個列,將該值分配給塊中的每一行。 它應該如下所示:
data count
0 0 0
1 0 0
2 1 2
3 1 2
4 0 0
5 0 0
6 1 4
7 1 4
8 1 4
9 1 4
有沒有簡單的 pandas 方法來做到這一點?
另一種方式:
import pandas as pd
df = pd.DataFrame({'data': [0, 0, 1, 1, 0, 0, 1, 1, 1, 1]})
df['count'] = 0
m = df['data'] == 1
df.loc[m, 'count'] = df.loc[m, 'data'].groupby(by=(~m).cumsum()).transform("count")
它給:
data count
0 0 0
1 0 0
2 1 2
3 1 2
4 0 0
5 0 0
6 1 4
7 1 4
8 1 4
9 1 4
使用 np.where, cumsum
df['count']=np.where(df['data'].eq(1),(df['data']!=df['data'].shift(1)).cumsum(),df['data'])
data count
0 0 0
1 0 0
2 1 2
3 1 2
4 0 0
5 0 0
6 1 4
7 1 4
8 1 4
9 1 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.