如何检查Pandas数据帧中是否有任何值为NaN

  • 问题:
  • 在Python Pandas中,检查数据帧是否有一个(或多个)NaN值的最佳方法是什么?在

    我知道函数伊斯南警局,但这将为每个元素返回布尔值的数据帧。This post这里也不能完全回答我的问题

  • 答案:
  • jwilner他的反应是恰到好处的。我在探索是否有一个更快的选择,因为根据我的经验,对平面阵列求和(奇怪的)比计数快。此代码似乎更快:

    df.isnull().values.any()

    例如:

    In [2]: df = pd.DataFrame(np.random.randn(1000,1000))

    In [3]: df[df > 0.9] = pd.np.nan

    In [4]: %timeit df.isnull().any().any()
    100 loops, best of 3: 14.7 ms per loop

    In [5]: %timeit df.isnull().values.sum()
    100 loops, best of 3: 2.15 ms per loop

    In [6]: %timeit df.isnull().sum().sum()
    100 loops, best of 3: 18 ms per loop

    In [7]: %timeit df.isnull().values.any()
    1000 loops, best of 3: 948 µs per loop

    <代码>df.isnull().sum()