当前位置: 首页 > 知识库问答 >
问题:

Java Spark-dataset/dataframe中两列值的差异

盖向荣
2023-03-14
col_1 col_2 col_3
A     5      3
B     null  -2
C     2     null
D     null  null
E     3      1
F     4     -2
col_1 col_2 col_3 diff_col
A     5      3     2
B     null  -2    -2
C     2     null   2
D     null  null   0
E     3      1     2
F     4     -2     2

共有1个答案

朱高超
2023-03-14

您可以使用coalese[1]和lit[2],因为您只有两列。

    private Column absoluteBetweenTwo(final Dataset<Row> ds) {
        final Column col_1 = functions.coalesce(ds.col("col_1"), functions.lit(0));
        final Column col_2 = functions.coalesce(ds.col("col_2"), functions.lit(0));
        return functions.abs(col_1.minus(col_2));
    }

并将其添加为列

    ds.withColumn("col_3", this.absoluteBetweenTwo(ds));

另一种解决方案是将数据集明确地包装在dataframenafunctions[3]中,并使用fill,否则Java API不能接受。

    return new DataFrameNaFunctions(ds).fill(0L);
 类似资料:
  • 我只是想知道Apache Spark中的和之间有什么区别(Spark 2.0.0 DataFrame只是)的类型别名? 你能把一个转换成另一个吗?

  • 我有一个数据帧(df),如下所示(仅为示例),可能有10个或更多数据帧: 我想计算数据框中b列值的变化百分比。但是有一个例外,当日期是'2010-01-09'(只是一个例子),并计算b'2010-01-09'的变化百分比,b在'2010-01-08'中的值应该是10倍,就这一次,其他日期应该使用原始值,我的意思是没有10倍。一般来说,我通过以下代码计算变化百分比: 但是当日期是:'2010-01-

  • 我有一个熊猫数据框,它有超过4列。col1中的某些值缺失,我希望根据以下方法设置这些缺失的值: 尝试根据具有相同col2, col3, col4值的记录的col1值的平均值来设置它 如果没有这样的记录,则根据具有相同col2, col3值的记录的col1值的平均值来设置它 如果仍然没有这样的记录,则根据具有相同col2值的记录的col1值的平均值来设置它 如果以上都找不到,将其设置为col1中所有

  • 我正在寻找一种方法,以找到不同的值,在两个数据帧的列。例如: 数据表A: 但是,有没有一个简单的解决方案,可以只使用DataFrame操作来获得,也许除了最后的Collect?

  • 我有这样的Excel数据: 我想在ColumnA中找到Columnb中不存在的记录。