我在pandas中有一个数据框。我需要检查横幅如何影响订单。这就是为什么我需要比较订单日期和“banners_show”和“banners_click”等事件的日期。当然,订单日期应晚于这两个事件的日期。而主要的事情,我应该数的金额等订单。This is my dataframe In标题可以是“banner_show”、“banner_click”、“order”,当然还有它们的日期。我希望我会得到的数额的用户谁作出了订单后,看到或点击的旗帜。
user title time
0 user_0 banner_click 2017-02-09 20:24:04
1 user_0 order 2017-03-20 19:24:04 #user0 clicked a banner and then after a period of time he has bought
2 user_1 banner_show 2017-04-14 20:24:04
3 user_1 order 2017-02-04 20:24:04 #user1 made an order earlier than he saw a banner, we don't need to count him
4 user_2 order 2017-08-12 20:24:04 #user2 made an order, then he clicked a banner and made an order, we should count him
5 user_2 order 2017-03-12 20:24:04
5 user_2 banner_click 2017-08-11 20:24:04 #
我试过这个:
banner_click = set(df.loc[df['title'].eq('banner_click'), 'user'])
order = set(df.loc[df['title'].eq('order'), 'user'])
unique_user_buy_from_click= len(banner_click & order)
print(unique_user_buy)
我还试图使用“查询”,但它不工作正确预期输出:unique users-2
,total_made_orders -2
(user_0和user 2匹配)
可重复的示例:
df = pd.DataFrame({'user': ['user_0', 'user_0', 'user_1', 'user_1', 'user_2', 'user_2','user_2'],
'title': ['banner_click', 'order', 'banner_show', 'order', 'order','order','banner_click']
})
如果有看到此事件后下订单的唯一用户的数量以及这些唯一用户下的所有订单的数量,那就更好了
2条答案
按热度按时间sqougxex1#
要解决此问题,您需要执行以下操作:
1.按用户分组,然后按日期排序。
1.检查横幅显示或横幅单击事件是否在每个用户的订单事件之前。
1.对满足条件的用户进行计数。
下面是这个问题的答案:
要实现这一点,您可以按用户对您的框架进行分组,然后按日期排序。之后,对于每个用户,您可以检查在订单事件之前是否有banner_show或banner_click事件。这里有一个解决方案:
此解决方案将为您提供在查看或单击横幅后下订单的用户计数。
myzjeezk2#
我会用途:
输出:
2
中间体:
要获取每个用户在看到横幅后的订单计数,请执行以下操作:
输出量: