python-3.x - 如果懒惰地评估,如何检查 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
当我categoric_df
从 PyCharm 调试器中检查时:
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]
总结:在这里,如果我选择不存在的 dypes 并从中创建一个 dask.DataFrame ,如果我使用函数,我会得到一个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
是否有任何列似乎是合理的。数据框仍然有行的事实只是意味着仍然有一个索引。
推荐阅读
- javascript - 在我的网页中访问网络摄像头,即使浏览器可以访问摄像头,视频也不会显示
- gridview - 不同布局下flutter gridview子高度如何实现?
- javascript - React JS setState 行为
- java - 从另一个片段调用方法
- java - 在 Java 中向 Rest Web 服务发送 JSON Post 请求
- angular - 如何从 html 文件中调用服务方法。?
- python - 线性回归怀疑。手动验证值
- javascript - 使用 jquery 捕获所有单击事件,无论元素单击事件是否具有 stopPropagation
- animation - ThreeJS GLB IK 动画导出
- c# - 如何在 EF / EF Core 的第二个表上实现具有某些条件的左连接?