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

基于两列条件删除DataFrame数据:移除ColB非空计数为0的ColA分组所有行

实现方案

方案1:groupby + filter(写法最简洁)

直接用pandas分组内置的过滤方法,一行代码就能实现需求:

import pandas as pd
# 假设原始df已创建完成
new_df = df.groupby('ColA').filter(lambda group: group['ColB'].notna().any())

逻辑说明:按ColA分组后,filter会保留满足条件的全部分组行,这里判断条件是分组内ColB存在至少一个非NaN值就保留整个分组,否则整组过滤。

方案2:groupby + transform(大数据量性能更优)

如果处理的数据量很大,transform的广播机制比逐组运行lambda效率更高,写法也很简洁:

# 生成布尔掩码:属于保留分组的行标记为True
mask = df['ColB'].notna().groupby(df['ColA']).transform('any')
new_df = df[mask]

逻辑说明:先给每行计算ColB是否非NaN的布尔值,再按ColA分组后把“该组是否有非NaN值”的结果广播到组内所有行,最后用布尔索引直接过滤即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:54:03