Python Spark使用整数和浮点数混合的列创建数据帧

Python Spark使用整数和浮点数混合的列创建数据帧,python,dataframe,apache-spark,pyspark,apache-spark-sql,Python,Dataframe,Apache Spark,Pyspark,Apache Spark Sql,我想用一列数字创建一个spark数据框,其中一些是整数,另一些是浮点: tmp = spark.createDataFrame([1.0, 2.1, 3], IntegerType()).toDF('bins') 它引发了以下错误: TypeError:字段值:IntegerType无法接受类型中的对象1.0 如何创建列中包含1.0、2.1、3的数据框?它应该是3,不能像:3.0那样进行浮动。2.1也不能转换为2。 如果改用此命令: tmp = spark.createDataFrame([1

我想用一列数字创建一个spark数据框,其中一些是整数,另一些是浮点:

tmp = spark.createDataFrame([1.0, 2.1, 3], IntegerType()).toDF('bins')
它引发了以下错误:

TypeError:字段值:IntegerType无法接受类型中的对象1.0

如何创建列中包含1.0、2.1、3的数据框?它应该是3,不能像:3.0那样进行浮动。2.1也不能转换为2。 如果改用此命令:

tmp = spark.createDataFrame([1.0, 2.1, 3], FloatType()).toDF('bins')
它引发了以下错误:

TypeError:字段值:FloatType无法接受类型中的对象3


如何创建此数据框?

以下是您的解决方案:

从pyspark.sql导入函数为F,窗口为W,类型为T tmp=spark.createDataFramemapfloat[1.0,2.1,3],T.FloatType.toDFbins 或者另一个:

tmp= spark.createDataFrame[1.0,2.1,3],T.StringType 托夫宾斯先生 .带柱箱,F.colbins.castT.FloatType
以下是您的解决方案:

从pyspark.sql导入函数为F,窗口为W,类型为T tmp=spark.createDataFramemapfloat[1.0,2.1,3],T.FloatType.toDFbins 或者另一个:

tmp= spark.createDataFrame[1.0,2.1,3],T.StringType 托夫宾斯先生 .带柱箱,F.colbins.castT.FloatType
你不能那样做。即使你可以,你也不应该。为什么你不能有一个3.0?实际上我可以有3.0,但是如果这个列表变成了一个自动生成的数字列表呢?我应该将所有整数转换为浮点吗@我想是的,它们应该在数学上表示相同的东西。有时浮点数会出现精度错误,但如果混合了数字类型,就只能这样了。这就是答案。非常高兴地感谢@Bluesheeptoken!你不能那样做。即使你可以,你也不应该。为什么你不能有一个3.0?实际上我可以有3.0,但是如果这个列表变成了一个自动生成的数字列表呢?我应该将所有整数转换为浮点吗@我想是的,它们应该在数学上表示相同的东西。有时浮点数会出现精度错误,但如果混合了数字类型,就只能这样了。这就是答案。非常高兴地感谢@Bluesheeptoken!