spark:如何用“;”读取csv作为分隔符和“,”作为小数点分隔符?
spark : how to read csv with ";" as delimiter and "," as decimal separation?
我的 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-') 所以它也不起作用。
尝试使用 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|
+----+-------------------+
我的 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-') 所以它也不起作用。
尝试使用 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|
+----+-------------------+