gpt4 book ai didi

python-3.x - 如果延迟评估,如何检查 dask 数据框是否为空?

转载 作者:行者123 更新时间:2023-12-04 04:20:28 29 4
gpt4 key购买 nike

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

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

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

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

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

UPDATE: print(len(categoric_df.columns)) is returning 0. This can be used for figuring out if the dataframe is empty or not. But is this viable? I am not sure.

最佳答案

您似乎遇到了数据帧未正确打印的错误。如果您想在 https://github.com/dask/dask/issues/new 提出错误报告那将是报告此事的正确地点。

不过,这应该不会影响您要执行的检查。查看 .columns 以查看是否有任何列似乎是合理的。 dataframe 仍然有行的事实仅仅意味着仍然有一个索引。

关于python-3.x - 如果延迟评估,如何检查 dask 数据框是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59511235/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com