gpt4 book ai didi

python - 根据 Pandas 数据框规则创建新列

转载 作者:行者123 更新时间:2023-12-01 07:53:16 25 4
gpt4 key购买 nike

嗨,我偶然发现了 pandas 数据框的问题。我有这个数据框。

user    event   diff days
1001 request 45
1001 approve 43
1002 request 44
1002 approve 43
1002 request 42
1003 approve 41
1003 request 40
1003 approve 39
1003 request 38

我想根据此规则创建新列标记:我们将问题定义为在每个用户最后请求后的 45 天内未发出另一个请求。

输出应如下所示。

user    event   diff Days   flag
1001 request 45 Problem
1001 approve 43 Problem
1002 request 44 NoProblem
1002 approve 43 NoProblem
1002 request 42 NoProblem
1003 approve 41 NoProblem
1003 request 40 NoProblem
1003 approve 39 NoProblem
1003 request 38 NoProblem

我无法使用np.wherenp.select提出解决方案。欢迎任何类型的解决方案。

如果您想尝试一下,您可以使用它来重现我上面的数据框。

df = pd.DataFrame(data={'user': [1001, 1001, 1002, 1002, 1002, 1003, 1003, 1003, 1003],
'event': ['request', 'approve', 'request', 'approve', 'request', 'approve', 'request', 'approve', 'request'],
'Diff Days': [45, 43, 44, 43, 42, 41, 40, 39, 38]})

注意我需要将仅在以下情况下标记为问题:在上次请求(列差异天)后 45 天内我们没有为每个用户和事件(我的意思是仅请求)发出另一个请求。事件的其余字段不起作用。

最佳答案

编辑:

在评论中,您表示要标记事件请求差异天数>= 45的用户。方法如下:

users_with_problems = df.loc[(df["event"] == "request") & (df["Diff Days"] >= 45), "users"]
df["Flag"] = "No problem"
df.loc[df["user"].isin(users_with_problem), "Flag"] = "Problem"

编辑结束。

您似乎希望Flag 在遇到单一问题的用户的所有行中显示问题。为此:

df["Flag"] = "No problem"
users_with_problem = df.loc[df["Diff Days"] >= 45, "user"]
df.loc[df["user"].isin(users_with_problem), "Flag"] = "Problem"

这将返回:

user    event  Diff Days        Flag
1001 request 45 Problem
1001 approve 43 Problem
1002 request 44 No problem
1002 approve 43 No problem
1002 request 42 No problem
1003 approve 41 No problem
1003 request 40 No problem
1003 approve 39 No problem
1003 request 38 No problem

但是,您说过您只想在 diff 为 45 或更大时标记问题。您可以按如下方式执行此操作:

df["Flag"] = "No Problem"
df.loc[df["Diff Days"] >= 45, "Flag"] = "Problem"

这只会标记 diff >= 45 行中的用户:

user    event  Diff Days        Flag
1001 request 45 Problem
1001 approve 43 No problem
1002 request 44 No problem
1002 approve 43 No problem
1002 request 42 No problem
1003 approve 41 No problem
1003 request 40 No problem
1003 approve 39 No problem
1003 request 38 No problem

关于python - 根据 Pandas 数据框规则创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56092076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com