Python 在dask数据帧上的列上应用.map_分区时出错

Python 在dask数据帧上的列上应用.map_分区时出错,python,dataframe,dask,Python,Dataframe,Dask,我最近决定更加冒险,尝试探索更多的DASK数据帧。我试图将特定函数应用于其中一个列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,

我最近决定更加冒险,尝试探索更多的DASK数据帧。我试图将特定函数应用于其中一个列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()
当然,这是一个更简单的例子,我只是编了个例子来说明我一直在做什么。该代码运行良好,问题在于我所面临的实际情况。现在,我有一个更复杂的数据帧,我想在其中对一列应用一个函数。我正在应用以下功能:

 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
我能够将该函数应用于带有.map_分区的列,问题是当我尝试使用after.compute查看数值结果时,我收到一个错误键错误:0。我不明白我之前的简单例子和我所面临的情况怎么会没有问题


希望我能做到简明扼要。我非常感谢你在这件事上的帮助!也欢迎您提供查找内容的建议

我建议您在正常的Pandas数据帧上尝试您的功能,以验证它是否正常工作:

GetID(df.compute())
如果可以的话,接下来我将尝试使用单线程调度程序,以及pdb模块来调查回溯

df.map_partitions(GetID).compute(scheduler='single-threaded')
如果您在IPython中使用%debug magic,这很容易做到