[HADOOP] Spark fillNa가 null 값을 대체하지 않습니다.
HADOOPSpark fillNa가 null 값을 대체하지 않습니다.
나는 다음과 같은 데이터 세트를 가지고 있으며 null 값을 포함하고 있으며, spark에서 fillna를 사용하여 null 값을 대체해야한다.
DataFrame :
df = spark.read.format("com.databricks.spark.csv").option("header","true").load("/sample.csv")
>>> df.printSchema();
root
|-- Age: string (nullable = true)
|-- Height: string (nullable = true)
|-- Name: string (nullable = true)
>>> df.show()
+---+------+-----+
|Age|Height| Name|
+---+------+-----+
| 10| 80|Alice|
| 5| null| Bob|
| 50| null| Tom|
| 50| null| null|
+---+------+-----+
>>> df.na.fill(10).show()
na 값을 주면 변경되지 않고 동일한 데이터 프레임이 다시 나타납니다.
+---+------+-----+
|Age|Height| Name|
+---+------+-----+
| 10| 80|Alice|
| 5| null| Bob|
| 50| null| Tom|
| 50| null| null|
+---+------+-----+
새 데이터 프레임을 만들고 데이터 프레임에 채우기 값을 저장하려고 시도했지만 결과는 변경되지 않았습니다.
>>> df2 = df.na.fill(10)
null 값을 대체하는 방법은 무엇입니까? fill na를 사용하여 가능한 방법을 알려주십시오. 미리 감사드립니다.
해결법
-
==============================
1.Height 열이 숫자가 아닌 것 같습니다. df.na.fill (10)을 호출하면 spark는 숫자 열인 유형 10과 일치하는 열만 null로 바꿉니다.
Height 열이 숫자가 아닌 것 같습니다. df.na.fill (10)을 호출하면 spark는 숫자 열인 유형 10과 일치하는 열만 null로 바꿉니다.
Height 컬럼이 문자열 일 필요가 있다면, df.na.fill ('10 '). show ()를 시도해 볼 수 있습니다. 그렇지 않으면 IntegerType ()에 캐스팅하는 것이 필요합니다.
-
==============================
2.원하는 경우 각 열에 특정 기본값을 제공 할 수도 있습니다.
원하는 경우 각 열에 특정 기본값을 제공 할 수도 있습니다.
df.na.fill({'Height': '10', 'Name': 'Bob'})
from https://stackoverflow.com/questions/40395932/spark-fillna-not-replacing-the-null-value by cc-by-sa and MIT license