繁体   English   中英

在 dask dataframe 上的列上应用.map_partition 时出错

[英]Error when applying .map_partition on a column over a dask dataframe

我最近决定更加冒险并尝试探索更多的 DASK 数据帧。 我正在尝试将特定的 function 应用于 dataframe 列之一,我使用的语法如下:

import pandas as pd
import dask.dataframe as dd
import dask.array as da

df_data = pd.DataFrame({'Column 1': [300,300,450,500,500,750,600,300, 150],'Column 2': [100,130,230,200,300,350,600,550,530], 'Column 3': [250, 300, 400, 500, 700,350, 750, 550, 600]})

def TestFunc(x):
    y = x*2 + abs(x/2 - x*3)
    return y

dd_data = dd.from_pandas(df_data, npartitions = 1)
data_test = dd.map_partitions(TestFunc,dd_data['Column 1'])
data_test.compute()

自然是一个更简单的例子,我只是为了展示我一直在做什么而编造的。 这段代码运行良好,问题在于我面临的实际情况。 现在,我有一个更复杂的 dataframe ,我想将 function 应用于一列。 我正在应用以下 function:

 def GetID(phase):
     nDataPoints = len(phase)
     myRanges = np.deg2rad(np.arange(0,360,6))
     phase[phase>np.deg2rad(354+3)] = 0
     ID = np.array([])
     for i in np.arange(0,nDataPoints):
         val = abs(myRanges-phase[i])
         iID = np.argmin(val)
         ID = np.append(ID, iID+1)
     return ID

我可以将 function 应用于.map_partitions列,问题是当我尝试在.compute()之后使用查看数值结果时,我收到一个错误Key error: 0 我不明白我之前的简单示例以及我所面临的情况如何没有问题。

希望我能做到简洁而准确。 我非常感谢您对此的帮助! 也欢迎提出要查找的内容的建议

我建议在正常的 Pandas dataframe 上尝试您的 function 以验证它是否正常工作:

GetID(df.compute())

如果可行,那么接下来我将尝试使用单线程调度程序以及pdb模块来调查回溯

df.map_partitions(GetID).compute(scheduler='single-threaded')

如果您在 IPython 中使用%debug魔法,这很容易做到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM