2017-11-03 7 views
0

데이터 프레임의 열에서 특수 문자 (å)를 제거하려고합니다. ,데이터 프레임의 열에서 특수 문자 제거

된 ClientID 내 원래 데이터가 약 내가 필요로되는 크기

AR0001å, DH_HL704221157198295_91

AR00022, DH_HL704221157198295_92

8TB됩니다 PatientID :

내 데이터처럼 보인다 이 특수 문자를 제거합니다. 내가 df.show()을 할 때 보여 dataframe에 넣은 후

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

:

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

:이 문자를 대체 할

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

코드를

코드는 데이터를로드하는

하지만 이것은 작동하지 않았습니다. 데이터 세트에서 데이터를로드하는 동안 charset을 "UTF-8"로 변경하면 작동합니다.

현재 문자 세트 (ISO-8859-1)로 해결책을 찾을 수 없습니다.

답변

1

주의해야 할 몇 가지 것들,

  • 새로운 변수에 결과를 할당해야합니다, 그 후
  • 당신은 명령에 \
  • colName와 "A"를 탈출 할 필요가 없습니다 사용 ClientId 또는 PatientID

이러한 모든 작업을 수행했다면 "å", 지우고 자하는 문자를 찾아보십시오. ISO-8859-1 상당의 예를 들어, ClientID 열의,

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

는 또 다른 방법은에 UTF-8 문자 "A"를 변환하는 것입니다 그 결과 문자열로 대체합니다.

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

답변 해 주셔서 감사합니다. 데이터에서 모든 특수 문자를 제거 할 수는 없습니다. 데이터와 같은 몇 가지 특수 문자가 의미를 갖는 열은 거의 없습니다. 나는 무엇을 지키고 제거해야 하는지를 알려주는 부분 집합을 가지고 있지 않습니다. 특정 열에서 주어진 특수 문자를 제거해야한다는 요구 사항이 있습니다. – abhiadh

+0

@abhiadh'regexp_replace (df.col ("ClientID"), "Ã ¥", "")는 ISO-8859-1 (scala 포함)을 사용할 때 저에게 효과가있는 것 같습니다. – Shaido

+1

예, 실제로 작동했습니다. 함수에 전달하기 전에 특수 문자 "å"를 변환하여 사용했습니다. '새 문자열 ("å".getBytes ("UTF-8"), "ISO-8859-1"); ' – abhiadh