Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyspark-将多个列从Str转换为Int_Python_Apache Spark_Casting_Pyspark - Fatal编程技术网

Python Pyspark-将多个列从Str转换为Int

Python Pyspark-将多个列从Str转换为Int,python,apache-spark,casting,pyspark,Python,Apache Spark,Casting,Pyspark,我正在尝试使用PySpark 2.1.0将多个字符串列转换为数据帧中的整数。数据集是要开始的rdd,创建为数据帧时会生成以下错误: TypeError: StructType can not accept object 3 in type <class 'int'> 首先,问题是没有基于RDD创建数据帧。 此后,我尝试了两种方法来转换(df2),第一种是注释掉的 有什么建议吗? 或者,我是否可以使用.withColumn函数一次性强制转换所有列,而不是指定每个列? 实际的数据集虽然

我正在尝试使用PySpark 2.1.0将多个字符串列转换为数据帧中的整数。数据集是要开始的rdd,创建为数据帧时会生成以下错误:

TypeError: StructType can not accept object 3 in type <class 'int'>
首先,问题是没有基于RDD创建数据帧。 此后,我尝试了两种方法来转换(df2),第一种是注释掉的

有什么建议吗? 或者,我是否可以使用.withColumn函数一次性强制转换所有列,而不是指定每个列?
实际的数据集虽然不大,但有很多列。

问题不在于代码,而在于数据。您正在传递一个列表,该列表将被视为一列,而不是您想要的六列

试试下面的rdd行,它应该可以正常工作。(注意列表周围的额外括号)——

您使用上面更正的代码行显示以下输出:

+---+---+---+---+---+---+
|  A|  B|  C|  D|  E|  F|
+---+---+---+---+---+---+
|  1|  2|  3|  4|  5|  6|
+---+---+---+---+---+---+

+---+---+
|  A|  E|
+---+---+
|  1|  5|
+---+---+

您可以
映射到带有铸造列的新RDD
rdd = sc.parallelize([["1", 2, 3, 4, "5", 6]]) 
+---+---+---+---+---+---+
|  A|  B|  C|  D|  E|  F|
+---+---+---+---+---+---+
|  1|  2|  3|  4|  5|  6|
+---+---+---+---+---+---+

+---+---+
|  A|  E|
+---+---+
|  1|  5|
+---+---+