Извлечение преобразованного столбца из индекса без потери index.name с распределенным планировщиком - PullRequest
1 голос
/ 06 марта 2019

Мне нужно превратить индекс datetime в столбец int, но сохранить тот же индекс с тем же именем, но когда я выполняю операцию с индексом, индекс теряет свое имя. Это происходит только с распределенным планировщиком. Это также не обязательно должно быть datetime преобразованием, как вы можете видеть на примере ниже.

Чтобы исправить индекс, мне нужно сделать что-то вроде предложения в этом StackOverflow ответе или выполнить вместо него map_partitions. Могу ли я вычислить новый столбец из индекса, не теряя его имени, возможно, добавив столбец, но передав мета куда-нибудь? Является ли map_partitions идеальным (единственным) подходом?

Воспроизводимый пример

import pandas as pd
import numpy as np
import dask.dataframe as dd
from dask.distributed import Client
client = Client()

df = pd.DataFrame({'A': range(1, 1001), 'B': np.random.randn(1000)})
print(type(df.index.name) ,df.index.name)
df.index.name = 'named'
print(type(df.index.name) ,df.index.name)
df = dd.from_pandas(df, npartitions=8)
print(type(df.index.name) ,df.index.name)
df = df.assign(**{'C':df.index.astype('str')})
print(type(df.index.name) ,df.index.name)

выход

<class 'NoneType'> None
<class 'str'> named
<class 'str'> named
<class 'NoneType'> None

Версия

pandas==0.24.1
distributed==1.25.3
dask==1.1.1
numpy==1.15.4
...