У меня есть требование преобразовать значение цены в немецкий формат чисел. Но я использовал функцию regexp_replace в pyspark и обработал способ изменения. Но возвращаемый тип вывода - StringType , и мы должны привести его к DoubleType . При выполнении приведения выходные значения обновляются как null values
Пример ввода данных:
|price_num|
|3,104.15 |
|4,534.56 |
Я использую выбор данных для создания нового столбца:
regexp_replace(regexp_replace(regexp_replace(format_number( -1 * col('price_num').cast('double'), 2), '\\.', '@'), ',', '\\.'), '@', ',').alias(german_format)
Мне нужно привести значение в doubleType .. Пожалуйста, предложите любой способ преобразования, а не заполнять нулевые значения.
Output without casting:
price_num|german_format
string |string
3,104.15 |-3.104,15
4,534.56 |-4.534,56
My output when casting:
price_num|german_format
string |double
3,104.15 |null
4,534.56 |null #Invalid values
Expected output:
price_num|german_format
string |double
3,104.15 |-3.104,15
4,534.56 |-4.534,56