PySpark написать CSV цитаты все не числовые - PullRequest
0 голосов
/ 19 сентября 2018

Есть ли способ заключить в кавычки только нечисловые столбцы в кадре данных при выводе в файл CSV, используя df.write.csv('path')?

Я знаю, что вы можете использовать опцию quoteAll=True, чтобы заключить в кавычки все столбцы, но яхочу только заключить в кавычки строковые столбцы.

Я использую PySpark 2.2.0.

1 Ответ

0 голосов
/ 19 сентября 2018

Я хочу заключить в кавычки только строковые столбцы.

В write.csv в настоящее время нет параметра, который можно использовать, чтобы указать, какие столбцы следует заключать в кавычки.Однако один из обходных путей - изменить строковые столбцы, добавив кавычки вокруг значений.

Сначала определите строковые столбцы, выполнив итерации по dtypes

string_cols = [c for c, t in df.dtypes if t == "string"]

Теперь вы можете изменять эти столбцыдобавив кавычку в качестве префикса и суффикса:

from pyspark.sql.functions import col, lit, concat

cols = [
    concat(lit('"'), col(c), lit('"')) if c in string_cols else col(c) 
    for c in df.columns
]

df = df.select(*cols)

Наконец, напишите csv:

df.write.csv('path')
...