Ale*_*lex 6 python apache-spark pyspark
我正在读取一个 csv 文件到数据框
datafram = spark.read.csv(fileName, header=True)
Run Code Online (Sandbox Code Playgroud)
但是dataframe中的数据类型是String,我想把数据类型改成float。有没有办法有效地做到这一点?
实现此目的最直接的方法是通过强制转换。
dataframe = dataframe.withColumn("float", col("column").cast("double"))
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您想在读取 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
Run Code Online (Sandbox Code Playgroud)
现在,如果我们像您一样阅读它,我们将得到字符串值:
>>> df_csv = spark.read.csv("../data/test.csv", header=True)
>>> print(df_csv.dtypes)
[('a', 'string'), ('b', 'string'), ('c', 'string'), ('d', 'string')]
Run Code Online (Sandbox Code Playgroud)
但是,如果我们设置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')]
Run Code Online (Sandbox Code Playgroud)
然而,这种方法需要再次运行数据。您可以在DataFrameReader CSV 文档中找到更多信息。
| 归档时间: |
|
| 查看次数: |
5115 次 |
| 最近记录: |