使用分布式调度程序从索引中提取转换后的列而不会丢失index.name

时间:2019-03-06 09:38:40

标签: python pandas dataframe dask dask-distributed

我需要将一个datetime索引转换为一个int列,但要保留相同名称的相同索引,但是当我对索引进行操作时,索引会丢失其名称。 这仅在分布式调度程序中发生。如下面的示例所示,它也不必是datetime转换。

要修复索引,我需要执行类似此StackOverflow answer中的建议或使用map_partitions进行赋值。我是否可以从索引计算新列而不丢失其名称,也许可以添加列但将meta传递到某处? 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

0 个答案:

没有答案