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

如何按顺序及NaN规则筛选Pandas DataFrame行并保留组尾行

Pandas分组前筛选行:保留每组最后一行+非空Name2行

你的核心需求是删除Name2为NaN的行,但要保留每个分组的最后一行(即便该行Name2是NaN)。之前的筛选方式会一刀切删掉所有Name2为空的行,所以丢失了每组末尾的关键行,用以下方法可以解决:

实现步骤

  1. 标记每组最后一行
    给DataFrame新增一个临时列,标记每行是否属于所在分组的最后一行:

    # 替换'Group'为你的实际分组列名(比如Name1或其他分组标识)
    df['is_last_row'] = df.groupby('Group').cumcount(ascending=False) == 0
    

    这里cumcount(ascending=False)会对每个分组的行倒序计数,最后一行的计数结果为0,通过判断等于0来标记最后一行。

  2. 筛选目标行
    保留Name2非空或者是分组最后一行的行:

    df_filtered = df[(df['Name2'].notna()) | df['is_last_row']]
    # 可选:删除临时标记列
    df_filtered = df_filtered.drop('is_last_row', axis=1)
    

效果说明

这种方法会自动过滤掉所有Name2为空且不是分组末尾的行,同时完整保留每个分组的最后一行,完全适配你数千行的结构化数据。

比如假设你的输入数据结构如下:

IndexGroupName1Name2
0ATomAlice
1ATomNaN
2ATomBob
3ATomNaN
4BJaneDave
5BJaneNaN
6BJaneEve
7BJaneNaN

筛选后输出会是:

IndexGroupName1Name2
0ATomAlice
2ATomBob
3ATomNaN
4BJaneDave
6BJaneEve
7BJaneNaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:40:26