pandas :如何基于系列模式进行分组 [英] Pandas: how to groupby based on series pattern
本文介绍了 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屋!
查看全文