Spark에서 Dataframe을 사용하고 있으며 값이 "_P"로 끝나는 간단한 일반 표현식을 기반으로 다른 열 값을 바꾸려면 " 1 "로 끝나고"_N "으로 끝나는 경우"-1 "로 바꿉니다. 동일한 교체 작업을 수행하는 데 필요한 여러 열이 있습니다. 나는 또한 끝에 캐스팅을해야합니다.regexp를 사용하여 Spark DataFrame에서 문자열을 대체하는 방법
0
A
답변
2
"when ('column.endsWith ("_ P "), lit ("1 ")). ..."과 같은 표현식을 통해 수행 할 수 있습니다. regexp_replace를 사용하여 동일한 결과를 얻을 수 있습니다. 다음은 사용 예 년대 때
val myDf = sc.parallelize(Array(
("foo_P", "bar_N", "123"),
("foo_N", "bar_Y", "123"),
("foo", "bar", "123"),
("foo_Y", "bar_XX", "123")
)).toDF("col1", "col2", "col3")
val colsToReplace = Seq("col1", "col2")
import org.apache.spark.sql.Column
val castValues = (colName: String) => {
val col = new Column(colName)
when(col.endsWith("_P"), lit("1"))
.when(col.endsWith("_F"), lit("-1"))
.otherwise(col)
.as(colName)
}
val selectExprs = myDf.columns.diff(colsToReplace).map(new Column(_)) ++ colsToReplace.map(castValues)
myDf.select(selectExprs:_*).show
/*
+----+-----+------+
|col3| col1| col2|
+----+-----+------+
| 123| 1| bar_N|
| 123|foo_N| bar_Y|
| 123| foo| bar|
| 123|foo_Y|bar_XX|
+----+-----+------+
*/
편집
그런데, 당신이 뭘하려에 대한 내 댓글에 대한 다음 "df.na"기능이 NULL 값을 포함하는 행에서 작동하기위한 것입니다, 그래서, 비록 당신이 시도한 작업을 null로 포함 된 행에서만 작동합니다. 그 외에도 "바꾸기"는 정규 표현식에서 작동하지 않습니다. 적어도 내가 마지막으로 확인한 것은 아닙니다.
건배
관련 문제
- 1. Spark 스칼라 : DataFrame에서 필터 식을 대체하는 문제
- 2. regexp를 사용하여 모든 X를 0으로 대체하는 방법
- 3. Spark DataFrame에서 na.fill 스칼라
- 4. Spark Dataframe에서 파티션 분할을 보장하는 방법
- 5. regex를 사용하여 문자열을 대체하는 방법
- 6. Spark Dataframe에서 Python 함수 실행
- 7. 자바에서 문자열을 대체하는 방법?
- 8. DataFrame에서 문자열을 부동 소수점으로 변환
- 9. Spark DataFrame에서 객체 배열을 허용하는 UDF 정의?
- 10. sed를 사용하여 유닉스에서 문자열을 '$'로 대체하는 방법
- 11. gsub()을 사용하여 정확하게 문자열을 대체하는 방법
- 12. spark Dataframe에서 병합 작업을 수행하는 방법은 무엇입니까?
- 13. Spark Dataframe에서 numpy 배열을 수정하는 방법은 무엇입니까?
- 14. regexp를 사용하여 Oracle에서 일치하는 문자열을 사용하여 문자열을 분할하는 방법은 무엇입니까?
- 15. JavaScript에서 RegExp를 사용하여 문자열을 추출하는 방법은 무엇입니까?
- 16. Perl에서 regexp를 사용하여 부분 문자열을 제거하려면 어떻게해야합니까?
- 17. Spark Dataframe에서 labledpoint 생성하기 및 VectorAssembler에 이름 목록을 전달하는 방법
- 18. 문자열을 효율적으로 pairwise 대체하는 방법
- 19. RegExp를 javascript에서 사용하는 방법?
- 20. SQLite3에서 REGEXP를 사용하여 일치하는 문자열을 열 값으로 추출하는 방법
- 21. regexp를 사용하여 대문자 또는 소문자 만 포함하는 문자열을 찾는 방법
- 22. 서식 정보가 포함 된 문자열을 대체하는 방법
- 23. 파이썬 - n 개의 occurrencies와 정규식을 사용하여 문자열을 대체하는 방법
- 24. 안드로이드의 모든 일치 문자열을 대체하는 방법
- 25. 자바 스크립트 배열에서 문자열을 대체하는 방법
- 26. regexp를 사용하여 쿠키를 추출하는 방법은 무엇입니까?
- 27. Spark DataFrame에서 VectorUDT 열의 요소에 액세스하는 방법은 무엇입니까?
- 28. Spark DataFrame에서 중첩 된 열의 경로를 찾을 수 없습니다.
- 29. Spark 2.0.1 DataFrame에서 내부 조인을 수행 할 때 오류가 발생했습니다.
- 30. Spark (스칼라) : 연속적인 활성 시간으로 DataFrame에서 사용자의 세션 길이를 계산하십시오.
시도한 이유는 무엇인가요? –
df.na.replace (column, Map (""[a-zA-Z0-9] _P "->"1 ","[a-zA-Z0-9] _N "->"-1 ")). 작동하지 않습니다. –