简体   繁体   中英

How to check whether a DataFrame is empty?

I want to check whether a DataFrame is empty :

    BTC_ewma_24  ETH_ewma_24  DASH_ewma_24
24  4011.235578   334.597119        281.15
25  4011.285662   334.591056        281.15
26  4011.373673   334.603479        281.15
27  4011.453068   334.614686        281.15
28  4011.526571   334.624813        281.15
29  4011.591356   334.633980        281.15
30  4011.650075   334.642288        281.15
31  4011.703366   334.649828        281.15

I tried if(self.mean_exp.bool() == False): but it answers me :

ValueError: The truth value of a DataFrame is ambiguous.
Use a.empty, a.bool(), a.item(), a.any() or a.all().

As if it didn't even noticed that I used .bool()

I then used a.empty and it answered me :

AttributeError: 'list' object has no attribute 'empty'

IIUC: there is .empty attribute:

DataFrame:

In [86]: pd.DataFrame().empty
Out[86]: True

In [87]: pd.DataFrame([1,2,3]).empty
Out[87]: False

Series:

In [88]: pd.Series().empty
Out[88]: True

In [89]: pd.Series([1,2,3]).empty
Out[89]: False

NOTE: checking the length of DF ( len(df) ) might save you a few milliseconds compared to df.empty method ;-)

In [142]: df = pd.DataFrame()

In [143]: %timeit df.empty
8.25 µs ± 22.4 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [144]: %timeit len(df)
2.35 µs ± 7.56 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [145]: df = pd.DataFrame(np.random.randn(10*5, 3), columns=['a', 'b', 'c'])

In [146]: %timeit df.empty
15.3 µs ± 269 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

In [147]: %timeit len(df)
3.58 µs ± 12.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

Or you can using .shape

pd.DataFrame().shape
Out[1666]: (0, 0)
pd.DataFrame([1,2,3]).shape
Out[1667]: (3, 1)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM