如果延迟计算,如何检查dask数据帧是否为空?

问题描述 投票:1回答:1

我知道this question。但是请检查下面的代码(最小工作示例):

import dask.dataframe as dd
import pandas as pd

# intialise data of lists.
data = {'Name': ['Tom', 'nick', 'krish', 'jack'], 'Age': [20, 21, 19, 18]}

# Create DataFrame
df = pd.DataFrame(data)
dask_df = dd.from_pandas(df, npartitions=1)

categoric_df = dask_df.select_dtypes(include="category")

[当我尝试打印categoric_df时,出现以下错误:

ValueError: No objects to concatenate

并且当我从PyCharm调试器检查categoric_df时:

Unable to get repr for <class 'dask.dataframe.core.DataFrame'>

由于这些错误,我可以构建一个try / except块来检查数据框是否为空。但是我不想使用这种方法,因为不能保证它一直都在工作,而try / except会使代码变慢。当我尝试打印计算出的categoric_df时,它看起来像这样:

>>>print(categoric_df.compute())
Empty DataFrame
Columns: []
Index: [0, 1, 2, 3]

总结:在这里,如果我选择不存在的类型并从中创建dask.DataFrame,则会得到一个dask.DataFrame,如果使用len()函数,乍一看似乎并不为空。

>>>print(len(categoric_df))
4
>>>print(len(categoric_df.compute())
4
>>>print(categoric_df.compute().empty)
True

是否可以不计算就检查categoric_df是否为空? (我希望它保持懒惰的评估。)

UPDATEprint(len(categoric_df.columns))返回0。这可用于确定数据帧是否为空。但是这个可行吗?我不确定。

python-3.x dask dask-distributed
1个回答
0
投票

看来您遇到了一个错误,即数据框无法正确打印。如果您想在https://github.com/dask/dask/issues/new处提交错误报告,则是报告此错误的正确位置。

这不应该影响您要执行的检查。查看.columns以查看是否有任何列似乎是合理的。数据框仍然具有行这一事实仅意味着仍然存在索引。

© www.soinside.com 2019 - 2024. All rights reserved.