为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用groupby在python pandas中按条件递增

如何使用groupby在python pandas中按条件递增

holdtom 2022-06-07 17:23:36
我有来自两组 A 和 B 的数据。任务是监控变化,如果变化(Leap)大于 4,则 Stage 设置为高 1。数据是有序的(时间序列)。import pandas as pddf = pd.DataFrame({'Group': ['A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'],                    'Leap': [1, 5, 1, 1, 5, 1, 1, 3, 5, 5, 1, 1]})# First set Stage to 1 for all:df['Stage'] = 1# Function to find first leap -> set Stage to two.def setStage2(df):    df.loc[df['Leap'] > 4, 'Stage'] = 2    return df# Apply function by group:df.groupby('Group').apply(setStage2)这是我能走多远。阶段应该是增量的:在阶段 2 上一次,不会回到阶段 1。结果应该是这样的:那么如何填充Stage呢?
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

这是一种结合groupby和的解决方案transform。


import pandas as pd


df = pd.DataFrame({

    'Group': ['A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'],

    'Leap': [1, 5, 1, 1, 5, 1, 1, 3, 5, 5, 1, 1]

})


df["Stage"] = df.groupby("Group").Leap.transform(lambda x: (x > 4).cumsum()) + 1

在这种情况下,您也可以使用apply代替。transform


查看完整回答
反对 回复 2022-06-07
  • 1 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信