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=
: 指定要应用它的列
我有大约 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=
: 指定要应用它的列