我有一個 csv 檔案的問題,它包含像“7,27431439586819e-05”這樣的十進制值
spark.read.option("header", "true")\
.option("delimiter", ";")\
.option("locale", "fr-FR")\ *doesnt work...*
.option("inferSchema", "true")\
.csv("file.csv").toPandas()
逗號似乎不是標準逗號,我找不到指定符號的選項 (.option('decimal',',') 不存在,.option('locale','fr-FR') 不存在作業)
你有什么主意嗎 ?我也試過 re.sub("[^0-9]", ".") 然后意識到我有科學價值('e-')所以它也不起作用。
uj5u.com熱心網友回復:
嘗試使用 pyspark 中的 regexp_replace() 函式將“,”替換為“。” 然后轉換成 DoubleType()。
import pandas as pd
import pyspark.sql.functions as F
from pyspark.sql.types import DoubleType
df = pd.DataFrame({"Name": ['a', 'b', 'c'], "Measures":["7,27431439586819e-05", "15,4689439586819e-01", "-2,97431439586819e02"]})
dfs = spark.createDataFrame(df)
dfs_transformed = dfs.withColumn('Measures', F.regexp_replace('Measures', ',', '.').cast(DoubleType()))
dfs_transformed.show()
你應該得到正確輸入的值:
---- -------------------
|Name| Measures|
---- -------------------
| a|7.27431439586819E-5|
| b| 1.54689439586819|
| c| -297.431439586819|
---- -------------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/457312.html
標籤:阿帕奇火花
上一篇:基于欄位值的連接:SQL
