簡體   English   中英

從 dataframe 中的列中刪除特殊字符

[英]Remove special character from a column in dataframe

我正在嘗試從 dataframe 的列中刪除一個特殊字符 ( å )。

我的數據看起來像:

ClientID,PatientID 
AR0001å,DH_HL704221157198295_91
AR00022,DH_HL704221157198295_92

我的原始數據大小約為 8TB,我需要從中刪除這個特殊字符。

加載數據的代碼:

reader.option("header", true)
  .option("sep", ",")
  .option("inferSchema", false)
  .option("charset", "ISO-8859-1")
  .schema(schema)
  .csv(path)

當我執行df.show()加載到 dataframe 后,它顯示:

+--------+--------------------+
|ClientID|           PatientID|
+--------+--------------------+
|AR0001Ã¥|DH_HL704221157198...|
|AR00022 |DH_HL704221157198...|
+--------+--------------------+

我用來嘗試替換此字符的代碼:

df.withColumn("ClientID", functions.regexp_replace(df.col("ClientID"), "\å", ""));

但這沒有用。 在 dataframe 中加載數據時,如果我將字符集更改為“UTF-8”,它就可以工作。

我無法找到當前字符集 (ISO-8859-1) 的解決方案。

有些事情需要注意,

  • 確保將結果分配給新變量並在之后使用
  • 你不需要逃避“一”與\\
  • 命令中的colName應為ClientIdPatientID

如果你做了所有這些事情,那么我建議,而不是匹配“å”,嘗試匹配你想要保留的字符。 例如,對於ClientID列,

df.withColumn("ClientID", functions.regexp_replace(df.col("ClientID"), "[^A-Z0-9_]", ""));

另一種方法是將UTF-8字符“å”轉換為等效的ISO-8859-1,並替換為結果字符串。

String escapeChar = new String("å".getBytes("UTF-8"), "ISO-8859-1");

下面的命令將刪除所有特殊字符,並保留所有小寫/大寫字母和字符串中的所有數字:

df.withColumn("ClientID", functions.regexp_replace(df.col("ClientID"), "[^a-zA-Z0-9]", ""));

暫無
暫無

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

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