我有一个数据帧df
,索引不是单调增加超过4个分区,这意味着每个分区都用[0..N]索引。
我需要根据索引列表[0..M]选择行,其中M> N.
使用loc
会产生不一致的输出,因为有0
索引的多行(参见示例)。
换句话说,我需要克服Dask和Pandas'reset_index之间的区别,因为它很容易解决我的问题。
print df.loc[0].compute()
导致:
Unnamed: 0 best_answer thread_id ty_avc ty_ber ty_cjr ty_cpc \
0 0 1 1 1 0.052174 9 18
0 0 1 5284 12 0.039663 34 60
0 0 1 18132 2 0.042254 7 20
0 0 1 44211 4 0.025000 5 5
df
重新分区为1个分区和reset_index
,不喜欢内存不适合; npartitions
部分中的索引列表,应用偏移量计算并使用map_partitions
我想不出其他解决方案......可能最后一个解决方案效率更高,但不确定它是否真的可行。
答案 0 :(得分:2)
通常,Dask.dataframe不会跟踪构成dask.dataframe的pandas数据帧的长度。我怀疑你的选择4是最好的。您也可以考虑使用dask.delayed