spark使用整数和浮点数混合的列创建Dataframe

vbkedwbf  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(310)

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

tmp = spark.createDataFrame([1.0, 2.1, 3], IntegerType()).toDF('bins')

它会引发以下错误:
typeerror:字段值:integertype不能接受类型<class'float'>
如何使用创建Dataframe 1.0, 2.1, 3 在一个专栏里?应该是的 3 不能像这样漂浮: 3.0 . 也 2.1 不能投给 2 . 如果改用此命令:

tmp = spark.createDataFrame([1.0, 2.1, 3], FloatType()).toDF('bins')

它会引发以下错误:
typeerror:字段值:floattype不能接受类型<class'int'>
如何创建此Dataframe?

dvtswwa3

dvtswwa31#

以下是您的解决方案:

from pyspark.sql import functions as F, Window as W, types as T

tmp = spark.createDataFrame(map(float, [1.0, 2.1, 3]), T.FloatType()).toDF("bins")

或者另一个:

tmp = (
    spark.createDataFrame([1.0, 2.1, 3], T.StringType())
    .toDF("bins")
    .withColumn("bins", F.col("bins").cast(T.FloatType()))
)

相关问题