[英]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.