围绕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创建的数据框架中从未见过的东西。所以我的问题是:
答案 0 :(得分:2)
许多dask.dataframe操作将拒绝操作,或者在没有已知分区的数据帧上使用较慢的算法运行。见http://dask.pydata.org/en/latest/dataframe-design.html#partitions
例如,如果dask.dataframe知道索引已排序并且它知道每个分区的最小值/最大值,则df.loc
很快。但是,如果此信息未知,则df.loc
必须详尽地查看所有分区。
一般来说,dask.dataframe意识到你提出的可能性并应该采取相应行动。有些操作会比较慢。有些操作会拒绝操作。