如何解决Dask:将自定义函数应用于DataFrame会出错
我想加快DataFrame的处理速度,并决定为此目的使用dask库-但不能成功使用它。我做了一个测试示例来展示我的问题:
import numpy as np
import pandas as pd
import dask.dataframe as dd
from dask.multiprocessing import get
def testfunc(good):
return good*good
df = pd.DataFrame({'a' : [1,2,3],'b' : [4,5,6],'c' : [7,8,9]})
ddata = dd.from_pandas(df,npartitions=2)
df1 = ddata.map_partitions(lambda df: df.apply((lambda row: testfunc(*row)),axis=1)).compute(get=get)
但是运行此代码,我收到一个错误:TypeError:testfunc()接受1个位置参数,但给出了3个。您能解释一下我的代码有什么问题吗?
解决方法
这将进行较小的更改。您当前正在使用星号打开row
对象的包装。您可能想要直接通过该行。
import numpy as np
import pandas as pd
import dask.dataframe as dd
def testfunc(good):
return good*good
df = pd.DataFrame({'a' : [1,2,3],'b' : [4,5,6],'c' : [7,8,9]})
ddata = dd.from_pandas(df,npartitions=2)
df1 = ddata.map_partitions(lambda df: df.apply((lambda row: testfunc(row)),axis=1)).compute()
print(df1)
a b c
0 1 16 49
1 4 25 64
2 9 36 81
有关更多信息,您可能想查看expression Python文档
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。