[SCALA] 스칼라 : 나는 스칼라를 사용 Dataframes에 값을 대체 할 수있는 방법
SCALA스칼라 : 나는 스칼라를 사용 Dataframes에 값을 대체 할 수있는 방법
예를 들어 나는 모든 번호를 대체 할 내가 스칼라에서 그렇게 할 수있는 방법 0으로 열에 0.2 같음? 감사
편집하다:
|year| make|model| comment |blank|
|2012|Tesla| S | No comment | |
|1997| Ford| E350|Go get one now th...| |
|2015|Chevy| Volt| null | null|
이것은 내 Dataframe 내가 S에 메이크업 열에서 테슬라를 변경하는 것을 시도하고있다
해결법
-
==============================
1.노트 : 올리비에 히라 르 도트로 했나요 같이,이 응답이 최적화되고 withColumn 용액을 사용하는 하나되지 (Azeroth2b 응답)
노트 : 올리비에 히라 르 도트로 했나요 같이,이 응답이 최적화되고 withColumn 용액을 사용하는 하나되지 (Azeroth2b 응답)
이 받아 들여졌다으로이 답변을 삭제할 수 없습니다
다음은이 일에 내 걸릴 수 있습니다 :
val rdd = sc.parallelize( List( (2012,"Tesla","S"), (1997,"Ford","E350"), (2015,"Chevy","Volt")) ) val sqlContext = new SQLContext(sc) // this is used to implicitly convert an RDD to a DataFrame. import sqlContext.implicits._ val dataframe = rdd.toDF() dataframe.foreach(println) dataframe.map(row => { val row1 = row.getAs[String](1) val make = if (row1.toLowerCase == "tesla") "S" else row1 Row(row(0),make,row(2)) }).collect().foreach(println) //[2012,S,S] //[1997,Ford,E350] //[2015,Chevy,Volt]
당신은 실제로 직접 사용하는 DataFrame에 매핑 할 수 있습니다.
그래서 당신은 기본적으로 문자열 테슬라의 1 열을 확인합니다. 그것의 테슬라 경우, 메이크업 열 1의 다른 당신을 현재의 값에 대한 값 S를 사용
내 예제에서 다음 인덱스 (0부터)를 사용하여 행의 모든 데이터와 튜플을 구축 (행 (행 (0), 메이크업, 열 (2))))
그것을 할 수있는 더 좋은 방법은 아마도이있다. 그 익숙한 아직 스파크 우산 아니다
-
==============================
2.스파크 1.6.2, 자바 코드 (죄송합니다), 이것이 RDD를 거치지 않고 전체 dataframe에 대한 S 테슬라의 모든 인스턴스를 변경합니다 :
스파크 1.6.2, 자바 코드 (죄송합니다), 이것이 RDD를 거치지 않고 전체 dataframe에 대한 S 테슬라의 모든 인스턴스를 변경합니다 :
dataframe.withColumn("make", when(col("make").equalTo("Tesla"), "S") .otherwise(col("make") );
비 테슬라 열이 NULL로 전환되지 않도록 "그렇지 않으면"marshall245 @ 추가 수정 됨.
-
==============================
3.Azeroth2b @에서 솔루션의 오프 구축. 당신은 항목의 몇 가지를 교체하고 나머지는 변경하지 않고 남겨 둡니다. 다음 작업을 수행합니다. 그렇지 않으면 (...) 방법을 사용하지 않고, 열의 나머지는 널 (null)된다.
Azeroth2b @에서 솔루션의 오프 구축. 당신은 항목의 몇 가지를 교체하고 나머지는 변경하지 않고 남겨 둡니다. 다음 작업을 수행합니다. 그렇지 않으면 (...) 방법을 사용하지 않고, 열의 나머지는 널 (null)된다.
import org.apache.spark.sql.functions._ val newsdf = sdf.withColumn("make", when(col("make") === "Tesla", "S") .otherwise(col("make")) );
올드 DataFrame
+-----+-----+ | make|model| +-----+-----+ |Tesla| S| | Ford| E350| |Chevy| Volt| +-----+-----+
새로운 Dataframe
+-----+-----+ | make|model| +-----+-----+ | S| S| | Ford| E350| |Chevy| Volt| +-----+-----+
-
==============================
4.이는 사용자 정의 기능 (UDF)와 dataframes 달성 될 수있다.
이는 사용자 정의 기능 (UDF)와 dataframes 달성 될 수있다.
import org.apache.spark.sql.functions._ val sqlcont = new org.apache.spark.sql.SQLContext(sc) val df1 = sqlcont.jsonRDD(sc.parallelize(Array( """{"year":2012, "make": "Tesla", "model": "S", "comment": "No Comment", "blank": ""}""", """{"year":1997, "make": "Ford", "model": "E350", "comment": "Get one", "blank": ""}""", """{"year":2015, "make": "Chevy", "model": "Volt", "comment": "", "blank": ""}""" ))) val makeSIfTesla = udf {(make: String) => if(make == "Tesla") "S" else make } df1.withColumn("make", makeSIfTesla(df1("make"))).show
-
==============================
5.Dapha2nariplesa (( "존"매핑 "이름"-> "부패", "신디"-> "Joyeeta")). 쇼 ()
Dapha2nariplesa (( "존"매핑 "이름"-> "부패", "신디"-> "Joyeeta")). 쇼 ()
유형의 클래스 DataFrameNaFunctions에서 대체 할 [T] (골 : 문자열, 대체 : 맵 [T, T]) org.apache.spark.sql.DataFrame
이 기능을 실행하면 ON 헤더 활성 스파크 객체와 dataframe이 있어야합니다.
from https://stackoverflow.com/questions/32357774/scala-how-can-i-replace-value-in-dataframes-using-scala by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스파크 / 스칼라 dataframe에서의 하나 개의 컬럼의 값을 합산하는 방법 (0) | 2019.11.28 |
---|---|
[SCALA] 추가하거나 스칼라에서 튜플에 요소를 앞에 추가하는 방법 (0) | 2019.11.28 |
[SCALA] 익명 함수의 인수 유형은 완벽하게 알고 있어야합니다. (8.5 SLS) (0) | 2019.11.28 |
[SCALA] -127와 다시 문자열을 바이트 배열에 .. 문제 (0) | 2019.11.28 |
[SCALA] 추상 클래스를 구현 대 특색을 가진 스칼라 클라이언트 구성 (0) | 2019.11.28 |