Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在分组之后获得图案的计数?_Python_Pandas_Pandas Groupby - Fatal编程技术网

Python 如何在分组之后获得图案的计数?

Python 如何在分组之后获得图案的计数?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个由三列组成的数据框,例如orderid、time和status。每个订单可以有多种状态,例如新订单、已填写订单、部分订单、已取消订单。因此,订单id 123可以从新订单变为取消订单等,也可以有新订单10次 我的问题是,在我按订单id和时间进行分组后,如何找到每个订单状态模式的计数?e、 .g新的填充内容出现了多少次?“新建”、“新建”和“取消”显示多少次 我尝试了下面的方法,但我不知道如何才能得到我想要的结果 sortedOrders=OrdersAll.sort_values(['or

我有一个由三列组成的数据框,例如orderid、time和status。每个订单可以有多种状态,例如新订单、已填写订单、部分订单、已取消订单。因此,订单id 123可以从新订单变为取消订单等,也可以有新订单10次

我的问题是,在我按订单id和时间进行分组后,如何找到每个订单状态模式的计数?e、 .g新的填充内容出现了多少次?“新建”、“新建”和“取消”显示多少次

我尝试了下面的方法,但我不知道如何才能得到我想要的结果

sortedOrders=OrdersAll.sort_values(['ordid','timestamp'], ascending=[True, True])
sortedOrdersAll.groupby(['ordid','ostatus']).count()

我创建了一个虚拟数据帧df。下面您可以参考获取状态模式计数的逻辑

[109]中的
:状态='new,filled,partial,cancelled'。拆分('
在[102]中:df=pd.DataFrame([[random.randint(1,25),random.randint(100200),status[random.randint(0,3)],用于范围(50)],列=['order\u id','timestamp','status']
In[103]:测向头(10)
出[103]:
订单id时间戳状态
020120新
19118取消
216125部分
39124取消
42190已填妥
53185部分
65162人已填妥
721101新
825115已填妥
914141已填妥
在[104]中:df_group=df.groupby('order_id',as_index=False)
在[105]中:带有时间戳的定义状态转换(每个分组的df):
…:sorted_df=每个_分组的_df。sort_值('timestamp',升序=True)
…:连接的_转换=','.join(已排序的_df['status'])
…:返回连接的_转换
...:
在[106]中:result=df_grouped['status'].agg(带时间戳的状态转换)
In[107]:结果头(10)
出[107]:
订单id状态
0 1已填充
1 2已填写,已取消
部分的,取消的,部分的
3 4已填写、新增、取消
4.5已填写,已取消
5.6新的
6.7填充
部分的,取消的,取消的
8.10已取消,新
9.11新的、部分的
[108]中:result.groupby('status').count()
出[108]:
订单号
地位
已取消,新1
填充4
已填写,已取消2
填写、新增、取消1
填充,部分,部分1
新2
新的,取消的2
新的,填充的1
新的,新的,填满的1
新,新,新,部分,部分,取消,新1
新的,第1部分
第1部分
部分,取消,取消1
部分的,取消的,部分的1
部分,部分1
部分,部分,新,部分,新1

你能给我们看一些样本数据吗?我不能上传我的,因为它很敏感-我创建了一个小的虚拟样本,但不知道如何上传this@Maths12按CRTL+K键编辑问题并粘贴为code@anky_91很抱歉,它没有工作-我只能粘贴为图像。这些数据是我创建的。你的问题似乎类似于在列表中查找子序列,如果找到,则递增。可能会执行类似于
df['Status']的操作。值
以及您的特定
模式
的新、新、填充尝试查找列表中出现的
模式
。请参见此处:或此处: