擅长:python、mysql、java
<p>我可以在python3中创建真正的结果,只需稍微修改一下函数<code>df_amp_conversion</code>的定义。您没有返回<code>df_modelamp</code>的值!此代码适用于我:</p>
<pre><code>import ast
from pyspark.sql.functions import udf, col
values = [(u"['2','4','713']",10),(u"['12','245']",20),(u"['101','12']",30)]
df = sqlContext.createDataFrame(values,['list','A'])
def df_amp_conversion(df_modelamp):
string_list_to_list = udf(lambda row: ast.literal_eval(str(row)))
df_modelamp = df_modelamp.withColumn('float_list',string_list_to_list(col("list")))
return df_modelamp
df2 = df_amp_conversion(df)
df2.show()
# + -+ -+ -+
# | list| A| float_list|
# + -+ -+ -+
# |['2','4','713']| 10|[2, 4, 713]|
# | ['12','245']| 20| [12, 245]|
# | ['101','12']| 30| [101, 12]|
# + -+ -+ -+
</code></pre>