python - 根据列值将 pandas 数据帧拆分为块
问题描述
我想将数据帧分成从一个 True 值到下一个 True 值的块:
数据 | 旗帜 |
---|---|
MODS 于 2020 年 12 月 12 日开始 | 真的 |
一些数据 | 错误的 |
一些数据 | 错误的 |
MODS 于 2020 年 12 月 30 日开始 | 真的 |
一些数据 | 错误的 |
一些数据 | 错误的 |
至
数据 | 旗帜 |
---|---|
MODS 于 2020 年 12 月 12 日开始 | 真的 |
一些数据 | 错误的 |
一些数据 | 错误的 |
数据 | 旗帜 |
---|---|
MODS 于 2020 年 12 月 30 日开始 | 真的 |
一些数据 | 错误的 |
一些数据 | 错误的 |
请帮忙
解决方案
您可以使用 cumsum 创建组,然后查询每个组的数据名:
df = pd.DataFrame({'data':['MODS start 12/12/202','Some data', 'Some data', 'MODS starts 30/12/2020', 'Some data', 'Some data'],
'flag':[True, False, False, True, False, False]})
df['grp'] = df['flag'].cumsum()
print(df)
输出:
data flag grp
0 MODS start 12/12/202 True 1
1 Some data False 1
2 Some data False 1
3 MODS starts 30/12/2020 True 2
4 Some data False 2
5 Some data False 2
使用:
df.query('grp == 1')
data flag grp
0 MODS start 12/12/202 True 1
1 Some data False 1
2 Some data False 1
和
df.query('grp == 2')
data flag grp
3 MODS starts 30/12/2020 True 2
4 Some data False 2
5 Some data False 2
推荐阅读
- amazon-web-services - 詹金斯不是只在我的笔记本电脑上打开浏览器吗?
- visualization - PCL Visualizer:拾取/选择线条和其他形状
- python - 如何修复无法在 Conda 上加载本机 Tensorflow 运行时
- google-drive-api - 如何从 google drive api 获取资源密钥
- python - 可以抓取标签内所有数据的正则表达式
- github - 从 Jenkins Job 将更改推送到 Github
- ocaml - OCaml 流水线和类型构造函数参数
- flutter - valuenotifier 在更新列表时未更新小部件
- git - 您可以将现有的 git 存储库转换为“blobless”吗?
- google-apps-script - 如何根据自动过滤数据动态传输所有 Google 表格中的数据