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

如何基于Pandas DataFrame的column3非缺失值提取目标子数据集

Pandas按指定列非缺失值提取区间行并分割数据集

原始数据集

首先创建并查看原始DataFrame:

import pandas as pd
import numpy as np
column1 = [None,None,None,4,8,9,None,None,None,2,3,5,None]
column2 = [None,None,None,None,5,1,None,None,6,3,3,None,None]
column3 = [None,None,None,3,None,7,None,None,7,None,None,1,None]
df = pd.DataFrame(np.column_stack([column1, column2,column3]),columns=['column1', 'column2', 'column3'])

print(df)

输出结果:

column1 column2 column3
0     None    None    None
1     None    None    None
2     None    None    None
3        4    None       3
4        8       5    None
5        9       1       7
6     None    None    None
7     None    None    None
8     None       6       7
9        2       3    None
10       3       3    None
11       5    None       1
12    None    None    None

需求

以column3的非缺失值作为起止标记,提取相邻标记之间(包含标记行)的所有行,同时移除全空行,最终分割为两个子数据集。

解决方案

通过标记非缺失位置、生成分组键、筛选有效分组来实现:

# 标记column3的非缺失行
mask = df['column3'].notna()
# 生成分组键:每遇到一个非缺失值就递增分组编号
group_key = mask.cumsum()
# 过滤掉全空的分组,并重置每个分组的索引
valid_groups = [group.reset_index(drop=True) for _, group in df.groupby(group_key) if not group.isna().all().all()]

# 拆分得到目标子数据集
df1, df2 = valid_groups[0], valid_groups[1]

最终结果

打印df1:

column1 column2 column3
0        4    None       3
1        8       5    None
2        9       1       7

打印df2:

column1 column2 column3
0     None       6       7
1        2       3    None
2        3       3    None
3        5    None       1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:34:58