删除Pandas中包含所有Nan的列

时间:2017-12-10 22:47:44

标签: pandas dataframe

 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]})

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

我有一种感觉,这是一个很好的方法!

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

url(r'^(?P<u_slug>\w+)$',views.UniversityView.as_view(),name='university_homepage'), url(r'^(?P<u_slug>[-\w]+)$',views.UniversityView.as_view(),name='university_homepage'), 一起使用(thresh:int,默认为无 int值:要求许多非NA 值)

dropna

答案 2 :(得分:0)

您可以使用loc

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

答案 3 :(得分:0)

这对我有用

x.dropna(axis=1, how='all', inplace=True)