如何使用 Java 中的 spark 将空值替换为 Dataframe 中的特定值?

新手上路,请多包涵

我正在尝试提高使用 Java 在 Spark 中实现的逻辑回归算法的准确性。为此,我试图用该列中最常见的值替换该列中存在的 Null 或无效值。例如:-

 Name|Place
a   |a1
a   |a2
a   |a2
    |d1
b   |a2
c   |a2
c   |
    |
d   |c1

在这种情况下,我会将“Name”列中的所有 NULL 值替换为“a”,并将“Place”列中的所有 NULL 值替换为“a2”。到目前为止,我只能提取特定列中出现频率最高的列。您能否帮助我完成第二步,了解如何用该列的最常见值替换空值或无效值。

原文由 PirateJack 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 861
2 个回答

您可以使用 .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"))

原文由 Rami 发布,翻译遵循 CC BY-SA 3.0 许可协议

您需要使用数据框的 fill(String value, String[] columns) 方法,该方法会自动将给定列列表中的 Null 值替换为您指定的值。

因此,如果您已经知道要用…替换 Null 的值:

 String[] colNames = {"Name"}
dataframe = dataframe.na.fill("a", colNames)

您可以对其余列执行相同的操作。

原文由 Dan Carter 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题