У меня есть серия Dask с данными Dask.
Я бы хотел проиндексировать эту серию, чтобы получить кадры Dask для последующей работы.
Однако использование loc[0]
приводит к другому Серия Dask. Использование to_frame
также не работает, потому что в результате получается «кадр данных Dask из серии Dask с кадрами данных Dask».
Вот минимальный пример, в котором используется серия данных Dask с Pandas данными (не точно так же, но иллюстрирует проблему):
import pandas as pd
import dask.dataframe as dd
pdf1 = pd.DataFrame({'a': [1,2,3,4], 'b': [4,3,2,1]})
pdf2 = pd.DataFrame({'a': [4,3,2,1], 'b': [1,2,3,4]})
ps = pd.Series([pdf1, pdf2])
ds = dd.from_pandas(ps, npartitions=1)
print(type(ds.loc[0])) # still dask series
print(type(ds.loc[1])) # still dask series
print(ds.compute().loc[0]) # this is a pandas dataframe
print(ds.loc[0].compute()) # this is a pandas series
print(ds.loc[0].compute().loc[0]) # need to index into the singleton series to get back the dataframe
Похоже, что как только объект становится серией dask, все последующие комбинаторы сохраняют его как серию dask до compute
, что возвращает "singleton" pandas series.
Можно ли в любом случае сказать dask, что я должен относиться к индексируемому объекту того типа, который, как я ожидаю, будет?