我最近决定冒险,尝试探索更多DASK数据框。我正在尝试将特定功能应用于列数据框之一,我使用的语法如下:
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_partitions
的列,问题是当我尝试在.compute()
之后使用以查看数值结果时,会收到错误Key error: 0
。我不明白我以前的简单示例和面临的情况不会有问题。
希望我能做到简洁明了。非常感谢您在此方面的帮助!也欢迎提出查询建议
答案 0 :(得分:1)
我建议在正常的Pandas数据框上尝试您的功能,以验证其是否正常工作:
c = [0;3;4;5;6]
如果这行得通,那么我接下来将尝试使用单线程调度程序以及syntax: expected "]"
模块来调查回溯
const puppeteer = require('puppeteer')
;(async () => {
const browser = await puppeteer.launch({
headless:false,
defaultViewport:null,
devtools: true,
args: ['--window-size=1920,1170','--window-position=0,0']
})
const page = (await browser.pages())[0]
const open = await page.goto ( 'https://www.google.com' )
const submit = await page.$$('input[type="submit"]')
const length = submit.length
let num = 0
const shot = submit.forEach( async elemHandle => {
num++
await elemHandle.screenshot({
path : `${Date.now()}_${num}.png`
})
})
})()
如果您使用GetID(df.compute())
魔法在IPython中,这很容易做到。