【问题标题】:PySpark Create DataFrame With Float TypeErrorPySpark 创建带有浮点类型错误的 DataFrame
【发布时间】:2020-07-11 13:08:43
【问题描述】:

我的数据集如下:

我正在使用 PySpark 解析数据并稍后使用以下代码创建一个 DataFrame:

from pyspark.sql import SparkSession
from pyspark.sql import Row
from pyspark.sql import functions as f

def parseInput(line):
    fields = line.split(',')
    stationID=fields[0]
    entryType=fields[2]
    temperature= fields[3]*0.3
    return Row(stationID,entryType,temperature)

spark = SparkSession.builder.appName("MinTemperatures").getOrCreate()
lines = spark.sparkContext.textFile("data/1800.csv")
temperatures = lines.map(parseInput)
minTemps=temperatures.filter(lambda x:x[1]=='TMIN')
df = spark.createDataFrame(minTemps)

我收到以下错误:

TypeError: can't multiply sequence by non-int of type 'float'

显然,如果我从 temperature= fields[3]*0.3 中删除 0.3,则创建 DataFrame 工作。如何返回带有浮点数和一些基本数学运算的temperature

【问题讨论】:

    标签: dataframe pyspark apache-spark-sql pyspark-dataframes


    【解决方案1】:

    尝试温度= float(fields[3])*0.3

    【讨论】:

    • 感谢您的回答
    【解决方案2】:

    您可以先读取文件而不用乘法,然后将其转换为 Type Double,最后再进行乘法。

    我假设您的 csv 文件有标题。
    以下代码用于强制转换:

    data = data.withColumn("COLUMN_NAME", data["COLUMN_NAME"].cast("double"))
    

    【讨论】:

    • 感谢您的回答
    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 2018-01-11
    • 1970-01-01
    • 2018-12-08
    相关资源
    最近更新 更多