我想不出一个很好的方法在一个句子中问这个问题,所以我将展示我想做的事情。
假设我有一张桌子,每一行都是某人通过书本出租过程触发的事件。我们有2个活动,购物篮(包含他们想要的书)和结帐(结帐成功且书籍被租用时触发)。我想按名称分组,但也要按结帐事件和之前的每个购物篮事件分组。这是一个仅按名称=“ tim”分组的示例组。
|-------------------------------------------------|
| time | name | stage | payload |
|-------------------------------------------------|
| 1000 | tim | basket | harrypotter;twilight; |
|-------------------------------------------------|
| 1001 | tim | basket | harrypotter; |
|-------------------------------------------------|
| 1002 | tim | checkout | Order# 123456789 |
|-------------------------------------------------|
| 1003 | tim | basket | pandasfordummies; |
|-------------------------------------------------|
| 1004 | tim | checkout | Order# 145246263 |
|-------------------------------------------------|
我的问题是如何分组,以便每个分组中都有1个结帐事件,如下所示:
第一个订单
|-------------------------------------------------|
| time | name | stage | payload |
|-------------------------------------------------|
| 1000 | tim | basket | harrypotter;twilight; |
|-------------------------------------------------|
| 1001 | tim | basket | harrypotter; |
|-------------------------------------------------|
| 1002 | tim | checkout | Order# 123456789 |
|-------------------------------------------------|
二阶
|-------------------------------------------------|
| time | name | stage | payload |
|-------------------------------------------------|
| 1003 | tim | basket | pandasfordummies; |
|-------------------------------------------------|
| 1004 | tim | checkout | Order# 145246263 |
|-------------------------------------------------|
抱歉,如果措辞太糟糕。
假设您的表格位于pandas数据框中,并且已经按时间和名称排序,则可以使用以下代码:
import numpy as np
import pandas as pd
df = pd.DataFrame({'time': [1000, 1001, 1002, 1003, 1004],
'name':['tim', 'tim', 'tim', 'tim', 'tim'],
'stage':['basket', 'basket', 'checkout', 'basket', 'checkout'],
'payload':['harrypotter;twilight;', 'harrypotter;', 'Order# 123456789', 'pandasfordummies;', 'Order# 145246263']})
orders = np.split(df, np.where(df.stage == 'checkout')[0] + 1)
这将创建一个拆分数据帧的数组orders
,您可以正常访问,如orders[0]
,orders[1]
等等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句