Pyspark, как написать df с запятой в качестве десятичного разделителя

#python #pyspark

Вопрос:

Это моя функция, которую я использую для записи файлов:

 #pyspark
def write_file(dataframe=None, dest_dir=None, filename=None):
    import os
    temp_dir = dest_dir   '/tmp/'
    dataframe.coalesce(1) 
        .write 
        .format('com.databricks.spark.csv') 
        .mode('overwrite') 
        .option('header', True) 
        .option("emptyValue", None)
        .option('nullValue', None) 
        .option('delimiter', ';') 
        .option('DataFormat', 'dd-MMM-yyyy') 
        .option('encoding', 'UTF-8') 
        .save(temp_dir)
 

Мне нужно настроить его так, чтобы он заменял десятичный разделитель точек запятой. Когда я открываю csv/txt файлы, загруженные с этим в Excel, он рассматривает, например, 1,000000 как миллион вместо 1. Эти поля имеют десятичный формат(38,12).

Ответ №1:

Просто замените точку на запятую для этого столбца —

 df = df.withColumn('some_col', F.regexp_replace('some_col', ',', '.').cast('float'))
 

теперь напишите как есть