Pandas多次分组统计

发布于 2022-09-07 21:22:18 字数 409 浏览 14 评论 0

各位大佬,请教一个Pandas分组问题,个人感觉比较复杂。

df = pd.DataFrame({"Date":pd.date_range(start='2018-08-17 08:10:30',periods=15,freq='s',normalize=True),"Category":list('AAAAAAAAAAAABBB'),"ActionType":[1,3,2,1,4,5,3,1,3,4,5,2,1,3,2]})

首先按Category分类,类别里按Date时间排序,排序后按ActionType继续分组统计,ActionType的统计规则是,1为每个分组的开始,2为结束,但2不一定出现,示例数据的结果应该是Category分为两组A,B,其中A里又有3组,B里有一组

请教应该怎么实现或者有什么思路?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只为守护你 2022-09-14 21:22:18
df = pd.DataFrame({"Date":pd.date_range(start='2018-08-17 08:10:30',periods=15,freq='s',normalize=True),"Category":list('AAAAAAAAAAAABBB'),"ActionType":[1,3,2,1,4,5,3,1,3,4,5,2,1,3,2]})
split = []
for idx,(ctg,act) in enumerate(zip(df.Category,df.ActionType)):
    if act == 1:
        split.append(idx)
        print(idx,ctg,act)
split.append(len(df.Category))
for i in range(len(split)-1):
    print(df.Date[split[i]:split[i+1]])

结果:
0 A 1
3 A 1
7 A 1
12 B 1
0 2018-08-17 00:00:00
1 2018-08-17 00:00:01
2 2018-08-17 00:00:02
Name: Date, dtype: datetime64[ns]
3 2018-08-17 00:00:03
4 2018-08-17 00:00:04
5 2018-08-17 00:00:05
6 2018-08-17 00:00:06
Name: Date, dtype: datetime64[ns]
7 2018-08-17 00:00:07
8 2018-08-17 00:00:08
9 2018-08-17 00:00:09
10 2018-08-17 00:00:10
11 2018-08-17 00:00:11
Name: Date, dtype: datetime64[ns]
12 2018-08-17 00:00:12
13 2018-08-17 00:00:13
14 2018-08-17 00:00:14
Name: Date, dtype: datetime64[ns]

弄潮 2022-09-14 21:22:18

python3

np.vsplit( df,np.where(df.ActionType==1)[0][1:])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文