Как проверить, является ли фрейм данных пустым?
Я хочу проверить, является ли фрейм данных пустым:
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
Я пытался if(self.mean_exp.bool() == False):
но он отвечает мне:
ValueError: The truth value of a DataFrame is ambiguous.
Use a.empty, a.bool(), a.item(), a.any() or a.all().
Как будто он даже не заметил, что я использовал .bool()
Затем я использовал a.empty
, и он ответил Мне :
AttributeError: 'list' object has no attribute 'empty'
2 ответа:
IIUC: есть
.empty
атрибут:Фрейм данных:
In [86]: pd.DataFrame().empty Out[86]: True In [87]: pd.DataFrame([1,2,3]).empty Out[87]: False
Серия:
In [88]: pd.Series().empty Out[88]: True In [89]: pd.Series([1,2,3]).empty Out[89]: False
Примечание: проверка длины DF (
len(df)
) может сэкономить несколько миллисекунд по сравнению с методомdf.empty
; -)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)