【发布时间】:2020-11-10 04:31:46
【问题描述】:
我有一个 DF,其中包含某些项目的多个创建者的 id 以及随着时间的推移他们的项目结果。 每个项目要么是成功的(结果 = 1),要么是失败的(结果 = 0)。 DF 看起来像这样:
creator_id outcome
1 1
1 1
2 1
2 0
2 1
我正在寻找一种方法来创建两个新列:以前的项目和以前的成功。
第一个应该是任何创建者之前项目的累积数量。鉴于我已经按创建者和创建日期订购了 DF,我知道我可以通过运行以下代码来做到这一点:
df['prev_project']=df.groupby(['creator_id']).cumcount()
我的问题是我无法弄清楚如何创建先前成功的列。 我尝试运行以下代码:
df['prev_success']=df.groupby(['creator_id'])['outcome'].cumsum()
此代码的问题是它立即开始计数(第 x 行的成功被计为第 x 行中项目的先前成功)。 此外,我对结果路径不一致的项目有疑问,即一个创作者的顺序是:成功、失败、成功。
理想情况下,我的 DF 应该是这样的:
creator_id outcome prev_projects prev_success
1 1 0 0
1 1 1 1
2 1 0 0
2 0 1 1
2 1 2 1
请注意 creator_id 编号为 2 的结果所需的特殊顺序。 希望一切都清楚
【问题讨论】: