按nan数排列的pandas dataframe删除列

发布于 2021-01-29 16:08:54

我有一些包含nan的列的数据框。我想删除带有特定数量nan的那些列。例如,在下面的代码中,我想删除2个或更多nan的任何列。在这种情况下,列“
C”将被删除,仅保留“ A”和“ B”。如何实施?

import pandas as pd
import numpy as np

dff = pd.DataFrame(np.random.randn(10,3), columns=list('ABC'))
dff.iloc[3,0] = np.nan
dff.iloc[6,1] = np.nan
dff.iloc[5:8,2] = np.nan

print dff
关注者
0
被浏览
274
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    有一个thresh参数dropna,您只需要传递df的长度-NaN您想要作为阈值的值数:

    In [13]:
    
    dff.dropna(thresh=len(dff) - 2, axis=1)
    Out[13]:
              A         B
    0  0.517199 -0.806304
    1 -0.643074  0.229602
    2  0.656728  0.535155
    3       NaN -0.162345
    4 -0.309663 -0.783539
    5  1.244725 -0.274514
    6 -0.254232       NaN
    7 -1.242430  0.228660
    8 -0.311874 -0.448886
    9 -0.984453 -0.755416
    

    因此,以上内容将删除任何不符合df长度(行数)-2作为非Na值数量标准的列。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看