python - Pandas:如何根据系列模式进行分组

标签 python pandas pandas-groupby

具有以下 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 True分为2组,在组1中具有索引[0:2],以及[4 :6]组 2 中?

期望的输出: 组1:

    bool    foo
0   True    1
1   True    3
2   True    2

组2:

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

关于python - Pandas:如何根据系列模式进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57132096/

相关文章:

python - K 最短路径 Python 不工作

Pandas 数据框选择性数据清理 post groupby

python - pandas groupby 并在不同类型之间使用数字

python - 计算行出现次数并除以总行数 - unix/python

python - 字典条目都是一样的

python - 如何在一个位置处理多个平台的 python eggs?

python - Pandas:打印缺少值的列名

python - Pandas - Groupby 对象行为

python - 比较不同数据帧的 groupby 输出

python - Pandas 分组并根据条件添加列数据