将Pandas数据帧转换为Dask数据帧

49
假设我有一个Pandas数据框如下:
df=pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})

当我将其转换为dask dataframe时,namedivisions参数应包含什么内容:
from dask import dataframe as dd 
sd=dd.DataFrame(df.to_dict(),divisions=1,meta=pd.DataFrame(columns=df.columns,index=df.index))

类型错误:init()缺少1个必需的定位参数:“name”

编辑:假设我创建了一个像这样的pandas数据框:

pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})

同样地,要创建Dask DataFrame,需要提供三个额外的参数: name,divisionsmeta
sd=dd.Dataframe({'a':[1,2,3],'b':[4,5,6]},name=,meta=,divisions=)

感谢您的回复。
1个回答

73

我认为你可以使用dask.dataframe.from_pandas

from dask import dataframe as dd 
sd = dd.from_pandas(df, npartitions=3)
print (sd)
dd.DataFrame<from_pa..., npartitions=2, divisions=(0, 1, 2)>

编辑:

我找到了解决方案

import pandas as pd
import dask.dataframe as dd
from dask.dataframe.utils import make_meta

df=pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})

dsk = {('x', 0): df}

meta = make_meta({'a': 'i8', 'b': 'i8'}, index=pd.Index([], 'i8'))
d = dd.DataFrame(dsk, name='x', meta=meta, divisions=[0, 1, 2])
print (d)
dd.DataFrame<x, npartitions=2, divisions=(0, 1, 2)>

谢谢你的回复,但我想知道在创建Dask DataFrame时名称和分区参数是什么。 我已经阅读了文档,但无法理解。 - rey
1
谢谢,我会尝试解决它并等待其他答案。 - rey
1
@jezrael 是正确的。您应该使用 from-pandas 方法创建 Dask.DataFrame。只有在高级情况下才需要使用构造函数。 - MRocklin
1
我同意,了解这个将会很有趣。 - Arco Bast
1
@rey - 我找到了解决方案,请检查一下。 - jezrael
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接