Pandas 对多列中的非 na 值进行数据框过滤

Pandas dataframe filter on non na value in multiple columns

我有大约 4 列,除了 ID 列之外,我还需要保留其中至少一列具有值的行

第一列是 ID 列,永远不会为空

ID column A column B column C
01 199 222
02 50
03
04 20
05

输出

ID column A column B column C
01 199 222
02 50
04 20

您应该已经查看了文档:pandas.dropna

df.dropna(how='all')
>>> import pandas as pd
>>> df = pd.DataFrame([['','',''],[11,'',''],['','',22],['','','']])
>>> df
    0 1   2
0          
1  11      
2        22
3          
>>> df.loc[[any(row) for row in df.values]]
    0 1   2
1  11      
2        22

下次提供一个可重现的例子。

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

df = df.dropna(axis=0, how='all', subset=list(df.columns[df.columns != 'ID']))

axis=0 : 行数

how='all' : 完全 nan

subset= : 指定要应用它的列