【问题标题】:How to use level-values for indexing in a dask dataframe?如何在 dask 数据框中使用级别值进行索引?
【发布时间】:2020-12-23 14:42:30
【问题描述】:

从数据集初始值的过滤步骤中,我有一个更大数据集的索引子集,格式为

indices = pandas_DataFrame_of_initial_values[my_subset].index.get_level_values(0)

这些索引的格式为

Int64Index([...], dtype='int64', name='id', length=N)

有了这个,我喜欢使用索引来减少使用 Dask 的大型数据集,给定数据集为

from dask import dataframe as dd
ddf = dd.read_csv(path_to_data).set_index("id")

我试过了

ddf.loc[indices]
# ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

ddf[ddf.index.isin(indices)]
# NotImplementedError: dask.array<isin, shape=(nan,), dtype=bool, chunksize=(nan,), chunktype=numpy.ndarray>

ddf[ddf.index.isin(indices.compute())]
# ValueError: Item wrong length 236644 instead of 0.

如何在更大的数据集上实际使用索引子集?

【问题讨论】:

    标签: pandas dataframe dask dask-dataframe


    【解决方案1】:

    我刚刚发现Int64index 类型有一个to_list 方法,并且使用loc 属性的选择有效:

    ddf.loc[indices.to_list()].compute()
    

    【讨论】:

    • 这是一个可行的解决方案吗?如果是,你会愿意接受它;如果没有,您可能想删除它,因为其他人会认为问题已得到解答。
    • 是的,它的工作。是的,我现在已经接受了;以前不行,还是被封了两天。无论如何,我很乐意接受另一个答案,如果有更多信息可以说明索引的原因和方式......
    猜你喜欢
    • 2018-04-20
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2018-10-09
    相关资源
    最近更新 更多