具有以下 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/