【发布时间】:2017-04-12 08:59:50
【问题描述】:
问题
我有一个数据框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,不喜欢因为不适合内存; - 添加具有 [0..M] 索引的列并使用 set_index,不鼓励在 performance tips 中使用;
- question 的解决方案解决了另一个问题,因为他的 df 具有唯一索引;
- 将索引列表拆分为
npartitions部分,应用偏移计算并使用map_partitions
我想不出其他解决方案...可能最后一个更有效,但不确定它是否真的可行。
【问题讨论】:
标签: python dataframe indexing dask