You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于两列值拆分Pandas DataFrame为连续匹配的子DataFrame?

解决方案

核心思路

通过生成连续符合条件行的分组标识,利用groupby快速拆分出独立DataFrame,全程采用矢量化操作,适配大数据集需求。

实现代码

首先构造示例数据(可替换为你的真实数据集):

import pandas as pd

# 构造示例DataFrame
data = {
    'col1': [1, 1, 1, 1, 11, 1, 1, 1, 1, 1],
    'col2': [1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
    'col3': [3, 6, 9, 12, 13, 3, 6, 9, 6, 9]
}
df = pd.DataFrame(data)

执行拆分逻辑:

# 标记满足col1=1且col2=1的行
mask = (df['col1'] == 1) & (df['col2'] == 1)

# 生成连续块的分组键:每遇到不满足条件的行,分组编号递增,实现连续块分割
group_key = (~mask).cumsum()

# 拆分出所有连续符合条件的块,存入列表
split_dfs = [chunk for _, chunk in df[mask].groupby(group_key[mask])]

验证结果

遍历列表查看每个独立的DataFrame:

for idx, chunk in enumerate(split_dfs):
    print(f"拆分后的DataFrame {idx+1}:")
    print(chunk)
    print("-" * 35)

输出结果:

拆分后的DataFrame 1:
   col1  col2  col3
0     1     1     3
1     1     1     6
2     1     1     9
3     1     1    12
-----------------------------------
拆分后的DataFrame 2:
   col1  col2  col3
6     1     1     6
7     1     1     9
8     1     1     6
9     1     1     9
-----------------------------------

效率说明

该方法基于pandas内置的矢量化运算,避免了循环遍历每行的低效操作,即使处理1000+行的数据集也能快速完成。

内容的提问来源于stack exchange,提问作者WilliamAshoti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 05:52:35