[英]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
應為ClientId
或PatientID
如果你做了所有這些事情,那么我建議,而不是匹配“å”,嘗試匹配你想要保留的字符。 例如,對於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.