簡體   English   中英

在 pyspark dataframe 中用雙引號替換單引號

[英]replace single quotes with double quotes in pyspark dataframe

從下面的代碼我正在寫一個 dataframe 到 csv 文件。

由於我的 dataframe 包含""None ,我添加了replace("", None)因為Null值應該表示為None而不是"" (雙引號)

newDf.coalesce(1).replace("", None).replace("'", "\"").write.format('csv').option('nullValue', None).option('header', 'true').option('delimiter', '|').mode('overwrite').save(destination_csv)

我嘗試添加.replace("'", "\"").但它不起作用

數據還包含帶單引號的數據

例如:

Survey No. 123, 'Anjanadhri Godowns', CityName

我需要將 dataframe 中的單引號替換為雙引號。

如何實現?

在編寫 output 之前,您可以使用regexp_replace將所有列中的單引號替換為雙引號:

import pyspark.sql.functions as F

df2 = df.select([F.regexp_replace(c, "'", '"').alias(c) for c in df.columns])

# then write output
# df2.coalesce(1).write(...)

使用translate

from pyspark.sql.functions import *

data_list = [(1, "'Name 1'"), (2, "'Name 2' and 'Something'")]
df = spark.createDataFrame(data = data_list, schema = ["ID", "my_col"])
# +---+--------------------+
# | ID|              my_col|
# +---+--------------------+
# |  1|            'Name 1'|
# |  2|'Name 2' and 'Som...|
# +---+--------------------+

df.withColumn('my_col', translate('my_col', "'", '"')).show()
# +---+--------------------+
# | ID|              my_col|
# +---+--------------------+
# |  1|            "Name 1"|
# |  2|"Name 2" and "Som...|
# +---+--------------------+

這將用my_col列中的雙引號替換所有出現的單引號字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM