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
对吗?