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

如何将DataFrame划分为无缺失值且索引连续的子DataFrame?

解决方案

代码实现

定义一个函数提取DataFrame中连续非缺失值的子块:

import pandas as pd

def extract_non_na_blocks(df):
    # 标记所有非缺失值的行
    non_na_rows = df['Value'].notna()
    # 为连续的非缺失值块分配唯一组ID
    block_group_ids = df['Value'].isna().cumsum()[non_na_rows]
    # 按组ID拆分,提取每个非缺失值子块
    return [df.loc[non_na_rows & (block_group_ids == group_id)] 
            for group_id in block_group_ids.unique()]

使用示例

  1. 构造目标原始DataFrame:
df = pd.DataFrame({
    'Value': ['A', 'B', pd.NA, pd.NA, 'C', pd.NA]
})
  1. 调用函数获取子DataFrame:
# 获取两个子块
first_block, second_block = extract_non_na_blocks(df)

# 查看第一个子块
print(first_block)
# 输出结果:
#   Value
#0    'A'
#1    'B'

# 查看第二个子块
print(second_block)
# 输出结果:
#   Value
#4    'C'

逻辑说明

  • 用notna()筛选出所有非缺失值的行;
  • 通过isna().cumsum()给每个缺失值位置递增计数,让连续的非缺失值归为同一组;
  • 遍历每个唯一组ID,筛选对应行得到独立的子DataFrame。

内容的提问来源于stack exchange,提问作者Lay González

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:04:56