【问题标题】:increasing row based on condition and retaining recent values based on groups根据条件增加行并根据组保留最近的值
【发布时间】:2022-12-10 11:08:53
【问题描述】:

请帮忙。我在下面有一张桌子。如果 condition = false,我想将 1 添加到 episode,如果 condition = True,我想保留下一行的新值。然后如果 condition = False 再次将保留值加 1,依此类推。但如果会员编号在前,则剧集设置为 1。

member_no condition episode
0001/1 True 1
0001/1 False 1
0001/1 True 1
0001/1 False 1
0001/2 False 1
0001/2 True 1
0001/2 False 1
0001/2 False 1
0001/2 True 1
0001/3 True 1
0001/3 False 1
0001/3 True 1

这就是我所期待的。我试过使用 shift 函数,但我无法得到我想要的答案

member_no condition episode value
0001/1 True 1 1
0001/1 False 1 2
0001/1 True 1 2
0001/1 False 1 3
0001/2 False 1 1
0001/2 True 1 1
0001/2 False 1 2
0001/2 False 1 3
0001/2 True 1 3
0001/3 True 1 1
0001/3 False 1 2
0001/3 True 1 2

【问题讨论】:

  • 谢谢@Bhargav

标签: python pandas function loops group


【解决方案1】:

我希望我理解你的问题是对的:

df["value"] = (
    df.groupby("member_no")
    .apply(
        lambda x: x["condition"].eq(False).cumsum()
        + (x["condition"].iat[0] == True)
    )
    .values
)
print(df)

印刷:

   member_no  condition  episode  value
0     0001/1       True        1      1
1     0001/1      False        1      2
2     0001/1       True        1      2
3     0001/1      False        1      3
4     0001/2      False        1      1
5     0001/2       True        1      1
6     0001/2      False        1      2
7     0001/2      False        1      3
8     0001/2       True        1      3
9     0001/3       True        1      1
10    0001/3      False        1      2
11    0001/3       True        1      2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-20
    • 2023-01-19
    • 2021-11-27
    • 1970-01-01
    • 2020-07-28
    • 2015-02-17
    • 1970-01-01
    • 2017-06-08
    相关资源
    最近更新 更多