【问题标题】:Pandas dataframe filter on non na value in multiple columnsPandas 数据框过滤多列中的非 na 值
【发布时间】:2021-11-07 01:12:23
【问题描述】:
我有大约 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 |
|
【问题讨论】:
标签:
python
pandas
filter
na
【解决方案2】:
>>> 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
【解决方案3】:
下次提供一个可复制的例子。
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= : 指定你想在哪一列应用它