簡體   English   中英

如何計算條件在 pandas 的列中連續存在的次數

[英]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.

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