Python 3.x 如何使用pandas为多个员工找到积极的调查记录

Python 3.x 如何使用pandas为多个员工找到积极的调查记录,python-3.x,pandas,pandas-groupby,Python 3.x,Pandas,Pandas Groupby,我有下面的数据框。我想为多个代理找到一个最大的积极调查连胜 data = {'Name':['Ramu', 'Aana', 'Rafi', 'Ramu','Aana','Ramu','Aana','Rafi','Ramu','Aana','Rafi','Rafi','Rafi'], 'Score':[1,0,1,1,1,1,1,0,1,1,0,1,1]} Name Survey Ramu 1 Aana 0 Rafi 1 R

我有下面的数据框。我想为多个代理找到一个最大的积极调查连胜

data = {'Name':['Ramu', 'Aana', 'Rafi', 'Ramu','Aana','Ramu','Aana','Rafi','Ramu','Aana','Rafi','Rafi','Rafi'], 'Score':[1,0,1,1,1,1,1,0,1,1,0,1,1]} 

Name    Survey  
Ramu    1       
Aana    0       
Rafi    1       
Ramu    1       
Aana    1       
Ramu    1       
Aana    1       
Rafi    0       
Ramu    1       
Aana    1 
Rafi    0
Rafi    1
Rafi    1
我希望输出是这样的。请帮助我实现这一目标

Name    positive_survey_max_streak  
Ramu    4      
Aana    3       
Rafi    2       

我们可以创建一个函数,将
cumsum
重置为
0
。它基本上减去
1
,其中
得分=0
。然后我们使用
GroupBy
两次:

def cumsum_reset(arr):
    arr = arr.cumsum() - arr.cumsum().where(~arr).ffill().fillna(0).astype(int)

    return arr

dfg = (
    df['Score'].eq(1)
    .groupby(df['Name']).apply(cumsum_reset)
    .groupby(df['Name']).max()
    .reset_index(name='positive_survey_max_streak')
)
输出

   Name  positive_survey_max_streak
0  Aana                           3
1  Rafi                           2
2  Ramu                           4

Ramu是
4
对吗?