我正在将csv文件读取到dataframe
datafram = spark.read.csv(fileName, header=True)
但datafram中的数据类型是String,我想将数据类型更改为float。有效的方法吗?
答案 0 :(得分:3)
实现这一目标最直接的方法是通过施放。
dataframe = dataframe.withColumn("float", col("column").cast("double"))
答案 1 :(得分:3)
如果要在读取CSV时进行转换,可以在读取数据时使用inferSchema
参数。让我们尝试一个小测试csv文件:
$ cat ../data/test.csv
a,b,c,d
5.0, 1.0, 1.0, 3.0
2.0, 0.0, 3.0, 4.0
4.0, 0.0, 0.0, 6.0
现在,如果我们像你一样阅读它,我们将有字符串值:
>>> df_csv = spark.read.csv("../data/test.csv", header=True)
>>> print(df_csv.dtypes)
[('a', 'string'), ('b', 'string'), ('c', 'string'), ('d', 'string')]
但是,如果我们将inferSchema
设置为True
,它会将它们正确识别为双打:
>>> df_csv2 = spark.read.csv("../data/test.csv", header=True, inferSchema=True)
>>> print(df_csv2.dtypes)
[('a', 'double'), ('b', 'double'), ('c', 'double'), ('d', 'double')]
但是,这种方法需要对数据进行另一次运行。您可以在DataFrameReader CSV documentation找到更多信息。