pandas :如何基于系列模式进行分组 [英] Pandas: how to groupby based on series pattern

查看:46
本文介绍了 pandas :如何基于系列模式进行分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

具有以下df:

pd.DataFrame({'bool':[True,True,True, False,True,True,True],
              'foo':[1,3,2,6,2,4,7]})

其结果为:

    bool    foo
0   True    1
1   True    3
2   True    2
3   False   6
4   True    2
5   True    4
6   True    7

如何groupby分为两组,在group 1中具有索引[0:2],在group 2中具有[4:6]?

how to groupby Trues into 2 groups, to have indexes [0:2] in group 1, and [4:6] in group 2 ?

所需的输出: 组1:

    bool    foo
0   True    1
1   True    3
2   True    2

group2:

4   True    2
5   True    4
6   True    7

谢谢!

推荐答案

您可以做到:

import numpy as np
x = df[df["bool"]].index.values
groups = np.split(x, np.where(np.diff(x)>1)[0]+1)
df_groups = [df.iloc[gr, :] for gr in groups]

输出看起来像:


df_groups[0]
Out[56]: 
   bool  foo
0  True    1
1  True    3
2  True    2

df_groups[1]
Out[57]: 
   bool  foo
4  True    2
5  True    4
6  True    7

这篇关于 pandas :如何基于系列模式进行分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆