我有一项验证小数和日期字段的任务。我能够验证同一列上的小数和日期,但不能保留旧的列值。
输入:
id,amt1
1,123
2,321
3,345
4,543
5,789
当前输出:
id,amt1
1,12.3
2,32.1
3,34.5
4,54.3
5,78.9
预期产出:
id,amt1,original_amt1_values
1,12.3,123
2,32.1,321
3,34.5,345
4,54.3,543
5,78.9,789
下面是代码,我能够验证十进制字段但不能保留原始值。请帮助我。我想在数据框本身保留其原始列。
SourceFileDF = SourceFileDF.withColumn("amt1", DecimalConversion(col(amt1)))
DecimalConversion是我的UDF,SourceFileDF是我的数据帧。
答案 0 :(得分:0)
您可以使用临时列名称" amt1"并使用列重命名
SourceFileDF.withColumn("amt1_converted", DecimalConversion(col(amt1)))
SourceFileDF.withColumnRenamed("amt1", "original_amt1_values")
SourceFileDF.withColumnRenamed("amt1_converted", "amt1")
答案 1 :(得分:0)
您可以使用select并在一行中提供别名:
sourceFileDF.select(
DecimalConversion($"amt1").as("amt1") ,
$"amt1".as("original_amt1_values")
)