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



我知道这个问题。但是检查下面的代码(最小工作示例(:

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 块来检查数据帧是否为空。但我不想使用这种方法,因为它不能保证一直工作并且尝试/除了减慢代码速度。 当我尝试打印计算categoric_df时,它看起来像这样:

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

总结:在这里,如果我选择不存在的dypes并创建一个dask。数据帧 从中,我得到了一个dask.DataFrame,如果我使用该功能,乍一看似乎并不空len()

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

有没有办法在不计算的情况下检查categoric_df是否为空?(我希望它保持懒惰的评估。

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

看起来您遇到了数据帧无法正确打印的错误。 如果您想在 https://github.com/dask/dask/issues/new 提出错误报告,那将是报告此问题的正确位置。

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

最新更新