如何在xlwings中预先计算并调用对象字典

时间:2019-06-17 14:11:08

标签: xlwings

在xlwings中,我需要计算一系列对象并将它们存储在字典中。问题是,每次尝试从UDF调用这些对象时,都会收到“自动化错误440”。

from scipy.interpolate import LinearNDInterpolator as LND

Ddump = pd.read_csv('C:\....csv', header='infer', low_memory=False, dtype = np.float64)

X = Ddump.iloc[:,:4].values
Y = Ddump.iloc[:,4:].values

hull={}
List = Ddump.iloc[:,4:].head().columns.to_list()
for i in range(Y.shape[1]):
Fit = LND(X,Y[:,i])
hull[List[i].format(i)] = Fit

建立字典后,我们输入一些虚拟数据:

Set = 'S19'
PVec = np.array([0.1111 , 67.42, -.22, 1.97])

[in]  hull[Set](PVec)
[out] array([2179.0411926])

一切都很好。

我想定义一个函数来从UDF运行上述命令,如下所示:

@xw.func
@xw.arg('Set', str)
@xw.arg('Prices', np.array, ndim=2)
def LND(Set,Prices):
    return hull[Set](Prices)

我想使用此UDF进行插值,使对象的实例化由单个先前的过程运行,而无需每次调用​​此UDF都校准线性模型。

我设法建立了字典,但是UDF不会确认字典或其中存储的任何对象。

0 个答案:

没有答案