我创建了一个数据帧,如图所示
import ast
from pyspark.sql.functions import udf
values = [(u'['2','4','713',10),(u'['12','245']',20),(u'['101','12']',30)]
df = sqlContext.createDataFrame(values,['list','A'])
df.show()
+-----------------+---+
| list| A|
+-----------------+---+
|u'['2','4','713']| 10|
| u' ['12','245']| 20|
| u'['101','12',]| 30|
+-----------------+---+
**How can I convert the above dataframe such that each element in the list is a float and is within a proper list**
I tried the below one :
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")))
df2 = amp_conversion(df)
但数据保持不变。 我不想转换数据帧熊猫或使用收集,因为它是内存密集型。 如果可能的话,试着给我一个最佳的解决方案。我用的是pyspark
那是因为你忘了打字
虽然这样做会更有效率:
^{pr2}$我可以在python3中创建真正的结果,只需稍微修改一下函数
df_amp_conversion
的定义。您没有返回df_modelamp
的值!此代码适用于我:相关问题 更多 >
编程相关推荐