Tôi có một khung dữ liệu Spark có một số giá trị bị thiếu. Tôi muốn thực hiện một imputation đơn giản bằng cách thay thế các giá trị còn thiếu với giá trị trung bình cho cột đó. Tôi rất mới với Spark, vì vậy tôi đã đấu tranh để thực hiện logic này. Đây là những gì tôi đã cố gắng làm như vậy cho đến nay:Thay thế các giá trị bị thiếu bằng giá trị trung bình - Biểu tượng Spark
a) Để làm điều này cho một cột duy nhất (giả sử Col A), dòng mã này dường như làm việc:
df.withColumn("new_Col", when($"ColA".isNull, df.select(mean("ColA"))
.first()(0).asInstanceOf[Double])
.otherwise($"ColA"))
b) Tuy nhiên, Tôi đã không thể tìm ra, làm thế nào để làm điều này cho tất cả các cột trong dataframe của tôi. Tôi đã thử chức năng Bản đồ, nhưng tôi tin rằng nó lặp qua từng hàng của một khung dữ liệu
c) Có một câu hỏi tương tự trên SO - here. Và trong khi tôi thích giải pháp (sử dụng các bảng tổng hợp và kết hợp lại), tôi rất muốn biết nếu có một cách để làm điều này bằng cách lặp qua mỗi cột (tôi đến từ R, do đó, lặp qua mỗi cột bằng cách sử dụng một thứ tự cao hơn chức năng như lapply có vẻ tự nhiên hơn với tôi).
Cảm ơn!
Bằng cách này, nó được coi là một thực tế xấu để sử dụng 'asInstanceOf [T]' trong 'scala'. –