具有无序索引的 dask 数据帧会导致静默错误吗?
Can a dask dataframe with a unordered index cause silent errors?
dask.DataFrame 周围的方法似乎都可以确保索引列已排序。但是,通过使用 from_delayed
,可以构造一个具有未排序的索引列的 dask 数据框:
pdf1 = delayed(pd.DataFrame(dict(A=[1,2,3], B = [1,1,1])).set_index('A'))
pdf2 = delayed(pd.DataFrame(dict(A=[1,2,3], B = [1,1,1])).set_index('A'))
ddf = dd.from_delayed([pdf1,pdf2]) #dask.DataFrame with unordered index
[索引已设置,索引未排序,分区未知]的组合是我在 dask 自己创建的数据框中从未见过的。所以我的问题是:
- dask 是否经过测试可以很好地处理这样的数据帧?
- 甚至可能是对此类数据帧的计算默默地给出了错误的结果,例如因为他们假设要排序的索引或在不完整的数据子集上执行?
- 或更笼统:如果索引列未排序,它只会减慢索引访问速度还是会破坏功能?
许多 dask.dataframe 操作将拒绝操作或将在没有已知划分的数据帧上使用较慢的算法进行操作。参见 http://dask.pydata.org/en/latest/dataframe-design.html#partitions
例如,如果 dask.dataframe 知道索引已排序并且知道每个分区的 min/max,则 df.loc
很快。但是,如果此信息未知,则 df.loc
必须详尽地查看所有分区。
一般来说,dask.dataframe 知道您提出的可能性,应该采取相应的行动。有些操作会比较慢。部分操作会拒绝操作
dask.DataFrame 周围的方法似乎都可以确保索引列已排序。但是,通过使用 from_delayed
,可以构造一个具有未排序的索引列的 dask 数据框:
pdf1 = delayed(pd.DataFrame(dict(A=[1,2,3], B = [1,1,1])).set_index('A'))
pdf2 = delayed(pd.DataFrame(dict(A=[1,2,3], B = [1,1,1])).set_index('A'))
ddf = dd.from_delayed([pdf1,pdf2]) #dask.DataFrame with unordered index
[索引已设置,索引未排序,分区未知]的组合是我在 dask 自己创建的数据框中从未见过的。所以我的问题是:
- dask 是否经过测试可以很好地处理这样的数据帧?
- 甚至可能是对此类数据帧的计算默默地给出了错误的结果,例如因为他们假设要排序的索引或在不完整的数据子集上执行?
- 或更笼统:如果索引列未排序,它只会减慢索引访问速度还是会破坏功能?
许多 dask.dataframe 操作将拒绝操作或将在没有已知划分的数据帧上使用较慢的算法进行操作。参见 http://dask.pydata.org/en/latest/dataframe-design.html#partitions
例如,如果 dask.dataframe 知道索引已排序并且知道每个分区的 min/max,则 df.loc
很快。但是,如果此信息未知,则 df.loc
必须详尽地查看所有分区。
一般来说,dask.dataframe 知道您提出的可能性,应该采取相应的行动。有些操作会比较慢。部分操作会拒绝操作