在另一列中删除转换值后带有日期的行,以建立归因链

我有一个pd.dataframe看起来像这样:

cookie     date           channel       goal_reached
cookie_1   2020-01-12     paid          0
cookie_1   2020-02-17     organic       0
cookie_1   2020-04-02     referral      1
cookie_1   2020-05-13     direct        0
cookie_1   2020-05-16     direct        0
cookie_2   2020-01-18     referral      0
cookie_2   2020-03-13     paid          1
cookie_2   2020-04-01     organic       0
cookie_2   2020-05-16     organic       0
cookie_2   2020-05-22     paid          0
cookie_3   2020-01-13     direct        0
cookie_3   2020-04-14     organic       0
cookie_3   2020-06-10     organic       0

我想对每个cookie值进行分组,并删除具有goal_reached值1的日期之后的所有行。如果对于cookie,则没有goal_reached值1的情况,我需要获取所有行。

我想要这样的最终输出:

cookie     channel                         goal_reached
cookie_1   paid > organic > referral       1
cookie_2   referral > paid                 1
cookie_3   direct > organic > organic      0

我有以下代码,但它可以与所有行分组:

df = df.sort_values(['cookie', 'date'],
                    ascending=[False, True])
df = df.groupby('cookie', as_index=False).agg({'channel': lambda x: "%s" % ' > '.join(x), 'reg_goal': 'max'})
路易吉

您可以尝试以下方法:

df = df[df.groupby('cookie')['goal_reached'].transform(lambda x: x.cumsum().cumsum()).lt(2)]
df = df.groupby('cookie').agg({'channel': lambda x: ' > '.join(x), 'goal_reached': 'max'})
print(df)

                             channel  goal_reached
cookie                                            
cookie_1   paid > organic > referral             1
cookie_2             referral > paid             1
cookie_3  direct > organic > organic             0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将行值转换为带有Spark Scala中另一列的值的列

删除一列中具有重复值但另一列中具有不同值的行

如何删除另一列中具有特定值的所有 NaN 值的行?

Pandas - 根据后一列中是否存在值过滤一列中具有相同值和另一列中多个值的行

删除r中另一列中具有相同ID但值不同的行

删除一列中的值等于另一列中的值的行

删除 DataFrame 中两个日期列匹配的行,否则更改另一列中的值

根据另一列中的值删除一列中重复的行

Python,数据框:在列表的一列中复制元素,并将其归因于另一列中的行

SQL 函数删除另一列上具有特定日期和特定值的行

使用左反连接从另一列中存在的列中删除具有值的行

根据2列中的值删除行,除非另一列具有特定的文本字符

当所有值都是日期时,将一列中的 NA 替换为另一列中的值

删除具有重复的另一列的相同列值的所有行

如果一行共享一列中另一行的值并且在 R 中的另一列中具有一个值,如何删除该行?

根据另一列的值删除具有重复列值的行

根据另一列中的唯一值将多行转换为一行

查找一列中具有相同值而另一列中具有其他值的行?

MySQL 查询一列中具有相同值而另一列中具有不同值的行

选择在一列中具有相同值而在另一列中具有不同值的行

熊猫:删除其中一列的值出现在另一列中的任何行的行

如果某列中的值不满足另一列中的要求,则删除行

从另一列中删除不在最大和最大日期之间的行

从列表的pandas列中,如何删除不在列表的另一列中的所有值?

使用VBA根据一列中的时间和另一列中的值删除行

SQLite3:删除共享列值并且在另一列中具有一个或多个空值的所有行

如何将带有日期时间的DataFrame列拆分为两列:一列带日期,另一列带一天中的时间?

删除其中一列中带有“ $-”的数据框中的所有行

在多行的一列中查找具有相同值的行,而另一列具有不同的值