python-3.x - 如何使用 pandas 为多名员工找到积极的调查记录
问题描述
我有以下数据框。我想找到多个代理的最大积极调查连续性。
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
at的函数0
。它基本上减去1
. Score = 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
推荐阅读
- x11 - AllocColorPlanes 和 AllocColorCells 返回的位掩码有什么用途?
- c++ - 如何结合“价值”和“结合”?
- swift - 带有案例而不是 int 的 TabBar - SwiftUI
- java - 用于进行反射的 Java 库的 classOf T 而不是 T$
- asp.net-core-mvc - 如果使用 iframe 加载子网站并在子网站内设置会话,ASP.NET Core 5.0 MVC 会丢失父网站的会话
- flutter - 错误:类“字符串”没有实例获取器“令牌”。I/颤振(3268):接收器:“dc9e0de8fa2eaa917657e810db06aad2458e4f65”
- selenium - 如何根据兄弟输入的@id 选择跨度
- javascript - 使用日期时间选择器将日期格式化为 DD-MM-YYYY
- c# - ASP.NET Core 中的 ILogger 和 DependencyInjection 架构
- widget - PWA 是否支持小部件