Pir*_*ack 20 java apache-spark
我正在尝试提高使用Java在Spark中实现的Logistic回归算法的准确性.为此,我试图用该列的最频繁值替换列中存在的Null或无效值.例如:-
Name|Place
a |a1
a |a2
a |a2
|d1
b |a2
c |a2
c |
|
d |c1
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我将"Name"列中的所有NULL值替换为"a",将"Place"替换为"a2"列.到目前为止,我只能提取特定列中最常见的列.关于如何用该列的最常用值替换空值或无效值,能否帮助我完成第二步.
Ram*_*ami 34
您可以使用.na.fill函数(它是org.apache.spark.sql.DataFrameNaFunctions中的函数).
基本上你需要的功能是: def fill(value: String, cols: Seq[String]): DataFrame
您可以选择列,然后选择要替换null或NaN的值.
在你的情况下,它将是这样的:
val df2 = df.na.fill("a", Seq("Name"))
.na.fill("a2", Seq("Place"))
Run Code Online (Sandbox Code Playgroud)
Dan*_*ter 10
您将需要使用数据框的fill(String value,String [] columns)方法,该方法会自动使用您指定的值替换给定列列表中的Null值.
因此,如果您已经知道要用N替换Null的值:
String[] colNames = {"Name"}
dataframe = dataframe.na.fill("a", colNames)
Run Code Online (Sandbox Code Playgroud)
您可以对其余列执行相同的操作.
您可以使用DataFrame.na.fill()某个值替换空值以立即更新,您可以这样做
val map = Map("Name" -> "a", "Place" -> "a2")
df.na.fill(map).show()
Run Code Online (Sandbox Code Playgroud)
但是,如果您也想替换坏记录,则需要先验证坏记录。您可以通过使用带有like函数的正则表达式来做到这一点。