df["infos"] = df2["numbers"].map(lambda nr: custom_map(nr,hashmap))
这将根据custom_map函数写入infos列,并使用lambda语句的数字行.
有了dask,这并不是那么简单. ddf是一个dask DataFrame. map_partitions等效于在DataFrame的一部分上并行执行映射.
这不起作用,因为您没有在dask中定义类似的列.
ddf["infos"] = ddf2["numbers"].map_partitions(lambda nr: custom_map(nr,hashmap))
有谁知道如何在这里使用列?我根本不懂他们的API documentation.
解决方法 您可以使用 .map方法,与Pandas完全相同In [1]: import dask.dataframe as ddIn [2]: import pandas as pdIn [3]: df = pd.DataFrame({'x': [1,2,3]})In [4]: ddf = dd.from_pandas(df,npartitions=2)In [5]: df.x.map(lambda x: x + 1)Out[5]: 0 21 32 4name: x,dtype: int64In [6]: ddf.x.map(lambda x: x + 1).compute()Out[6]: 0 21 32 4name: x,dtype: int64
元数据
系统可能会要求您提供Meta =关键字.这使dask.dataframe知道函数的输出名称和类型.从map_partitions复制docstring:
Meta : pd.DataFrame,pd.SerIEs,dict,iterable,tuple,optionalAn empty pd.DataFrame or pd.SerIEs that matches the dtypes and column names of the output. This Metadata is necessary for many algorithms in dask dataframe to work. For ease of use,some alternative inputs are also available. Instead of a DataFrame,a dict of {name: dtype} or iterable of (name,dtype) can be provIDed. Instead of a serIEs,a tuple of (name,dtype) can be used. If not provIDed,dask will try to infer the Metadata. This may lead to unexpected results,so provIDing Meta is recommended. For more information,see dask.dataframe.utils.make_Meta.
所以在上面的例子中,我的输出将是一个名为’x’和dtype int的系列,我可以做以下任何一个更明确
>>> ddf.x.map(lambda x: x + 1,Meta=('x',int))
要么
>>> ddf.x.map(lambda x: x + 1,Meta=pd.SerIEs([],dtype=int,name='x'))
这告诉dask.dataframe对我们的函数有什么期望.如果没有给出Meta,那么dask.dataframe将尝试在一小段数据上运行你的函数.如果失败,它将引发错误请求帮助.
总结以上是内存溢出为你收集整理的如何使用dask映射列全部内容,希望文章能够帮你解决如何使用dask映射列所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)