首页 > Python > Python如何检查熊猫数据帧是否为空?

Python如何检查熊猫数据帧是否为空?

上一篇 下一篇

如何检查熊猫是否为空?就我而言,如果为空,我想在终端中打印一些消息。DataFrameDataFrame

分割线

网友回答:

您可以使用该属性来检查它是否为空:df.empty

if df.empty:
    print('DataFrame is empty!')

来源:熊猫文档

分割线

网友回答:

我使用该功能。它比 . 甚至更快。lenemptylen(df.index)

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10000, 4), columns=list('ABCD'))

def empty(df):
    return df.empty

def lenz(df):
    return len(df) == 0

def lenzi(df):
    return len(df.index) == 0

'''
%timeit empty(df)
%timeit lenz(df)
%timeit lenzi(df)

10000 loops, best of 3: 13.9 µs per loop
100000 loops, best of 3: 2.34 µs per loop
1000000 loops, best of 3: 695 ns per loop

len on index seems to be faster
'''

分割线

网友回答:

要查看数据帧是否为空,我认为应该测试数据帧的列索引的长度

if len(df.columns) == 0: 1

原因:

根据 Pandas 参考 API,以下两者之间存在区别:

  • 包含 0 行和 0 列的空数据帧
  • 一个空数据帧,其行至少包含 1 列NaN

可以说,它们是不一样的。其他答案是不精确的,或者没有区别,在这两种情况下,返回索引都是 0空是 Truedf.emptylen(df)len(df.index)

例子

示例 1:包含 0 行和 0 列的空数据框

In [1]: import pandas as pd
        df1 = pd.DataFrame()
        df1
Out[1]: Empty DataFrame
        Columns: []
        Index: []

In [2]: len(df1.index)  # or len(df1)
Out[2]: 0

In [3]: df1.empty
Out[3]: True

示例 2:清空为 0 行但仍保留列的数据帧n

In [4]: df2 = pd.DataFrame({'AA' : [1, 2, 3], 'BB' : [11, 22, 33]})
        df2
Out[4]:    AA  BB
        0   1  11
        1   2  22
        2   3  33

In [5]: df2 = df2[df2['AA'] == 5]
        df2
Out[5]: Empty DataFrame
        Columns: [AA, BB]
        Index: []

In [6]: len(df2.index)  # or len(df2)
Out[6]: 0

In [7]: df2.empty
Out[7]: True

现在,在前面的示例的基础上,其中索引为 0空为 True。读取第一个加载的数据帧 df1 的列索引长度时,它返回 0 列以证明它确实为空。

In [8]: len(df1.columns)
Out[8]: 0

In [9]: len(df2.columns)
Out[9]: 2

至关重要的是,虽然第二个数据帧 df2 不包含任何数据,但它不是完全空的,因为它返回保留的空列的数量。

为什么它很重要

让我们向这些数据帧添加一个新列以了解其含义:

# As expected, the empty column displays 1 series
In [10]: df1['CC'] = [111, 222, 333]
         df1
Out[10]:    CC
         0 111
         1 222
         2 333
In [11]: len(df1.columns)
Out[11]: 1

# Note the persisting series with rows containing `NaN` values in df2
In [12]: df2['CC'] = [111, 222, 333]
         df2
Out[12]:    AA  BB   CC
         0 NaN NaN  111
         1 NaN NaN  222
         2 NaN NaN  333
In [13]: len(df2.columns)
Out[13]: 3

很明显,df2中的原始列已经重新浮出水面。因此,谨慎的做法是读取列索引的长度,以查看数据帧是否为空。len(pandas.core.frame.DataFrame.columns)

实用的解决方案

# New dataframe df
In [1]: df = pd.DataFrame({'AA' : [1, 2, 3], 'BB' : [11, 22, 33]})
        df
Out[1]:    AA  BB
        0   1  11
        1   2  22
        2   3  33

# This data manipulation approach results in an empty df
# because of a subset of values that are not available (`NaN`)
In [2]: df = df[df['AA'] == 5]
        df
Out[2]: Empty DataFrame
        Columns: [AA, BB]
        Index: []

# NOTE: the df is empty, BUT the columns are persistent
In [3]: len(df.columns)
Out[3]: 2

# And accordingly, the other answers on this page
In [4]: len(df.index)  # or len(df)
Out[4]: 0

In [5]: df.empty
Out[5]: True
# SOLUTION: conditionally check for empty columns
In [6]: if len(df.columns) != 0:  # <--- here
            # Do something, e.g. 
            # drop any columns containing rows with `NaN`
            # to make the df really empty
            df = df.dropna(how='all', axis=1)
        df
Out[6]: Empty DataFrame
        Columns: []
        Index: []

# Testing shows it is indeed empty now
In [7]: len(df.columns)
Out[7]: 0

添加新的数据系列按预期工作,而无需重新呈现空列(实际上,没有任何系列包含仅包含 ):NaN

In [8]: df['CC'] = [111, 222, 333]
         df
Out[8]:    CC
         0 111
         1 222
         2 333
In [9]: len(df.columns)
Out[9]: 1

模板简介:该模板名称为【Python如何检查熊猫数据帧是否为空?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 219次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-18
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信素材 微信模板 单页式简历模板 微信公众平台 响应式 企业网站 html5 自适应 微信文章 微信图片
您可能会喜欢的其他模板