【发布时间】:2018-04-24 12:49:18
【问题描述】:
尝试使用 for 循环在 UDF 中一一发送列列表,但出现错误,即数据框找不到 col_name。目前在 list_col 列表中,我们有两列,但可以更改。所以我想编写一个适用于每个列列表的代码。在此代码中,我一次连接一行列,行值采用结构格式,即列表中的列表。对于每个 null 我必须给空间。
list_col=['pcxreport','crosslinediscount']
def struct_generater12(row):
list3 = []
main_str = ''
if(row is None):
list3.append(' ')
else:
for i in row:
temp = ''
if(i is None):
temp+= ' '
else:
for j in i:
if (j is None):
temp+= ' '
else:
temp+= str(j)
list3.append(temp)
for k in list3:
main_str +=k
return main_str
A = udf(struct_generater12,returnType=StringType())
# z = addlinterestdetail_FDF1.withColumn("Concated_pcxreport",A(addlinterestdetail_FDF1.pcxreport))
for i in range(0,len(list_col)-1):
struct_col='Concate_'
struct_col+=list_col[i]
col_name=list_col[i]
z = addlinterestdetail_FDF1.withColumn(struct_col,A(addlinterestdetail_FDF1.col_name))
struct_col=''
z.show()
【问题讨论】:
标签: python-3.x hadoop apache-spark dataframe pyspark