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。
我觉得有一个很好的方法来做到这一点!
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
使用dropna
和thresh
(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
你可以使用loc
:
x.loc[:, ~x.isnull().all()]
这对我有用
x.dropna(axis=1, how='all', inplace=True)