我真的是Spark和Pandas的新手。我想对没有任何列名的numpy.ndarray大矩阵应用pandas UDF。我应该如何定义UDF函数的输入?
这就是我所做的。 row是cassandra数据库中的一行,“ b2”是数据库中图像的列名。
def normalize_i(I):
iI=I
minI=20#np.min(I)
maxI=50#np.max(I)
minO=0
maxO=255
iI = (256.0/65536)*iI
io=(iI-minI)*(((maxO-minO)/(maxI-minI))+minO)
return io
b2 = cPickle.loads(row.asDict()['b2'], encoding='bytes')
pdf = pd.DataFrame(b2,columns=["x"])
dfb2 = spark.createDataFrame(pdf)
dfb2.select(normalize_i(col("x")))
符合预期
pd.DataFrame(b2,columns=["x"])
由于b2是array的数组,因此返回错误:
ValueError:传递的值的形状为(324,324),索引表示为(324,1)
如何定义数据框的列名以及函数的输入?
任何评论将不胜感激。 谢谢
答案 0 :(得分:0)
您能详细说明pdf的外观吗?
如果b2为324x324,我想您应该给324列名称:
columns = ['x'+str(i) for i in range(b2.shape[1])]