【问题标题】:Pandas function to make sequential based on label熊猫功能根据标签进行顺序
【发布时间】:2021-11-05 19:30:47
【问题描述】:

我有一个数据,我想根据 login_status 和另一个类别值查找某个事件的序列。

user_id     content_id       login_status         
    1            2            not login               
    1            3            not login               
    1            4            login                   
    2            2            login                   
    2            3            login                   

我想制作这样的序列列

user_id     content_id       login_status         sequence
    1            2            not login               1
    1            3            not login               1
    1            4            login                   2
    2            2            login                   1
    2            3            login                   1

所以我想在用户登录时制作一个序列,当用户登录时序列是 2

这是我尝试过的代码

   df1['Seq'] = df1.groupby((df1[['user_id', 'login_status']] != df1[['user_id', 'login_status']].shift(1)).any(axis=1).cumsum()).cumcount() + 1

但是登录状态不变时的squance sum

如何解决这个问题

【问题讨论】:

  • 您的预期结果是什么?
  • 用户从非登录活动登录的序列,squance 为 2

标签: python pandas group-by


【解决方案1】:

我相信你想要这样的东西,它使用 shift-cumsum 模式

df.assign(
    sequence=df.groupby(['user_id'], sort=False)
               .apply(lambda x: (x['login_status'] != x['login_status'].shift()).cumsum())
               .values
)

每当login_status 更改时,这将增加每个user_id 的序列。

【讨论】:

  • 啊我明白了,你把进程分成两个进程,谢谢,问题解决了
猜你喜欢
  • 2013-07-30
  • 2016-12-16
  • 1970-01-01
  • 2014-12-29
  • 2017-08-04
  • 2016-12-23
  • 2015-06-25
  • 2023-01-10
  • 2015-11-06
相关资源
最近更新 更多