python - 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
有关更多信息,您可能需要查看表达式Python 文档
推荐阅读
- android - Android 暗模式行为
- android - 我正在尝试应用 crashlytics,但 gradle 中发生了错误
- javascript - 如何在具有固定页眉和页脚的 HTML 布局中使用水平滚动条显示全部内容?
- python - 基于标签分离 NLTK 子树
- android - 请求焦点到 Activity 窗口的 decorView 中的视图
- angular - 如何基于对象属性使用 ngFor 动态加载多个 ng 模板
- python - 奇怪的错误:Python 中的 List.append 删除了先例输入并克隆了新的输入
- algorithm - 如何构建具有连续值之间最大平均距离的阈值图?
- python - 无法从 CSV 文件中读取文件名并在另一个文件夹中找到它
- regex - 将字符串中的单引号(撇号)转换为正确的开始和结束引号