删除Pandas中包含所有Nan的列

问题描述 投票:1回答:4
 x = pd.DataFrame({'x':[np.nan, 22, 11, np.nan, np.nan],
                   'letters':['a', 'a', 'b', 'b', 'b'],
                   'Nan1': [np.nan, np.nan, np.nan, np.nan, np.nan],
                   'bools': [True, True, False, True, False],
                   'Nan2': [np.nan, np.nan, np.nan, np.nan, np.nan],
                   'y': [100,200,11,333, 70]})

我想学习从这个拥有所有NaN的DataFrame中删除所有列的最佳方法。在这种情况下,它将删除列Nan1和Nan2。

我觉得有一个很好的方法来做到这一点!

pandas dataframe
4个回答
6
投票

AFAIK DataFrame.dropna()是最常用的方式:

In [17]: x = x.dropna(how='all', axis=1)

In [18]: x
Out[18]:
   bools letters     x    y
0   True       a   NaN  100
1   True       a  22.0  200
2  False       b  11.0   11
3   True       b   NaN  333
4  False       b   NaN   70

2
投票

使用dropnathresh(thresh:int,默认无int值:需要许多非NA值)

x.dropna(1,thresh=1)
Out[721]: 
   bools letters     x    y
0   True       a   NaN  100
1   True       a  22.0  200
2  False       b  11.0   11
3   True       b   NaN  333
4  False       b   NaN   70

0
投票

你可以使用loc

x.loc[:, ~x.isnull().all()]

0
投票

这对我有用

x.dropna(axis=1, how='all', inplace=True)
© www.soinside.com 2019 - 2024. All rights reserved.