Python panda检查 Dataframe 是否不为空

dz6r00yl  于 2022-11-19  发布在  Python
关注(0)|答案(6)|浏览(763)

我有一个if语句,它检查 Dataframe 是否为空,方法如下:

if dataframe.empty:
    pass
else:
    #do something

但我真的需要:

if dataframe is not empty:
    #do something

我的问题是--有没有.not_empty()的方法来实现这个?我还想问一下,第二个版本在性能上是否更好?否则,我可能会让它保持原样,即第一个版本?

sczxawaw

sczxawaw1#

只管做

if not dataframe.empty:
     # insert code here

如果 Dataframe 为空,dataframe.empty返回True,我们可以使用取反运算符not,将True转换为False,反之亦然。

yeotifhr

yeotifhr2#

.empty返回布尔值

>>> df_empty.empty
True

所以如果不为空可以写成

if not df.empty:
    #Your code

检查pandas.DataFrame.empty,可能会帮助某些人。

ivqmmu1c

ivqmmu1c3#

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

if not dataframe.empty:
    #do something

或者

if len(dataframe) != 0:
   #do something

或者

if len(dataframe.index) != 0:
   #do something
juud5qan

juud5qan4#

毫无疑问,empty的使用在这种情况下是最全面的(显式优于隐式)。
然而,在计算时间方面最有效的是通过使用len

if not len(df.index) == 0:
     # insert code here

资料来源:this answer

v1uwarro

v1uwarro5#

正如其他评论者已经清楚地解释的那样,在Python中,你可以通过简单地在前面加上 not 运算符来否定布尔表达式,因此:

if not df.empty:
  # do something

就能成功。
我只想澄清“空”在这个上下文中的含义,因为一开始我有点困惑。
根据Pandas文档,如果DataFrame中的任何轴的长度为0,则DataFrame.empty方法返回 True
因此,“empty”并不意味着像某些人所期望的那样,行为零列为零列为零。具有零行(轴1为空)但非零列(轴2不为空)的 Dataframe 仍然被视为空:

> df = pd.DataFrame(columns=["A", "B", "C"])
> df.empty
True

文档中强调的另一个有趣之处是,仅包含NaN的DataFrame被视为空。

> df = pd.DataFrame(columns=["A", "B", "C"], index=['a', 'b', 'c'])
> df
     A    B    C
a  NaN  NaN  NaN
b  NaN  NaN  NaN
c  NaN  NaN  NaN
> df.empty
False
7ivaypg9

7ivaypg96#

另一个道:

if dataframe.empty == False:
    #do something`

相关问题