python - 熊猫:如何根据系列模式进行分组
问题描述
具有以下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 组,[0:2]
在group 1
和[4:6]
in 中有索引group 2
?
所需的输出:group1:
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
推荐阅读
- reactjs - 使用 React Context 单击时切换值
- java - 如何为 i18n 配置 WebFlux
- javascript - 应用程序在按下后退按钮时关闭而不是返回 - Ionic 5
- arrays - 如何使用数组填充按钮堆栈
- arrays - 如何在表格中搜索单元格值
- etl - 在一个组件 ADF 中创建多个派生列
- node.js - 当在 apiEndpoints 中没有将 localhost 作为主机时,“无法 GET /”使用带有 nodejs express API 的 express gateway 或“Bad gateway”的问题
- javascript - 如何查看一个数组中的每个数字是否在另一个数组中找到平方?
- jersey - Java 11 上的泽西岛 1.19.4
- google-cloud-platform - G Suite 超级用户活动通知