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

如何筛选DataFrame中仅单一列非空的行?

解决方法

不需要逐个列检查其余所有列,有更简洁的写法,核心思路是先筛选出每行仅含一个非空值的行,再按非空列拆分:

步骤1:筛选符合条件的行

先计算每行非空值的数量,筛选出数量等于1的行:

import pandas as pd
import numpy as np

# 示例DataFrame
df = pd.DataFrame({
    'A': [1, np.nan, np.nan, 4],
    'B': [np.nan, 2, np.nan, np.nan],
    'C': [np.nan, np.nan, 3, np.nan]
})

# 筛选每行仅一个非空值的行
single_non_null_subset = df[df.notna().sum(axis=1) == 1]

步骤2:按非空列拆分子DataFrame

用字典推导快速生成每个列对应的子DataFrame(仅保留该列非空的行):

# 生成各列对应的子DataFrame字典
sub_dfs = {
    col: single_non_null_subset[single_non_null_subset[col].notna()]
    for col in df.columns
}

验证结果

比如sub_dfs['A']会返回仅A列非空的行:

A   B   C
0  1.0 NaN NaN
3  4.0 NaN NaN

这种写法既简洁又高效,避免了手动为每个列编写“其余列全为空”的复杂条件,尤其适合列数较多的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:03:13