pandas计算连续行为连续天数,目前最优雅的方式!

最近在做一个聊天记录的分析,想要构建一个指标,标记出每个人的连续发言条数,中间犯过好几次错误,总是算错,后来在才哥这篇帖子的启发下,想到了一个解决方案,而且会很简单。后来做完才发现才哥在最后已经把方法写出来了……

  • 直接上实现方法
    假设我们现在要对如下的行为,统计连续行为的发生次数。可以看到在‘连续行为次数’这一列中,计算出了每组连续行为的连续次数,而且只用了3行代码,而且还很好理解计算过程!
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,2,20), columns=['行为']).reset_index()
df['转换标记'] = df['行为']!=df['行为'].shift()  # 识别信号,判断行为是否发生了改变
df['行为分组'] = df['转换标记'].cumsum()  # 辅助列,根据识别信号,对相邻的相同行为进行分组,便于计算每组相同行为的连续发生次数
df['连续行为次数'] = df.groupby(['行为分组'])['index'].rank(method='dense')  # 根据行为分组,使用窗口函数对每条行为标记连续发生次数
display(df)

在这里插入图片描述
这里用了一个比较巧妙且符合人脑逻辑的方法对连续行为进行标注,比较难的可能就是最后的窗口函数的排序。先放个链接凑活着解释一下窗口函数的排序(rank)

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值