具有无序索引的dask数据帧是否会导致无提示错误?

时间:2016-12-21 17:00:26

标签: python dask

围绕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测试?
  • 甚至可能是对这些数据帧的计算会默默地给出错误的结果,例如:因为他们假设要对不完整的数据子集进行排序或执行索引吗?
  • 或者更一般:如果索引列没有排序,它是否只会降低索引访问速度或者是否会破坏功能?

1 个答案:

答案 0 :(得分:2)

许多dask.dataframe操作将拒绝操作,或者在没有已知分区的数据帧上使用较慢的算法运行。见http://dask.pydata.org/en/latest/dataframe-design.html#partitions

例如,如果dask.dataframe知道索引已排序并且它知道每个分区的最小值/最大值,则df.loc很快。但是,如果此信息未知,则df.loc必须详尽地查看所有分区。

一般来说,dask.dataframe意识到你提出的可能性并应该采取相应行动。有些操作会比较慢。有些操作会拒绝操作。