我在Spark数据帧中创建新列时遇到问题。我正在尝试使用withColumn()创建一个新列,如下所示:
.withColumn('%_diff_from_avg',
((col('aggregate_sales') - col('avg_sales')) / col('avg_sales') * 100))
这会导致一些值正确计算,但我的结果表中的大多数值都为null。我不明白为什么。
有趣的是,当我从计算中删除'* 100'时,我的所有值都被正确填充 - 即没有空值。例如:
.withColumn('%_diff_from_avg',
((col('aggregate_sales') - col('avg_sales')) / col('avg_sales')))
似乎有效。
因此似乎乘以100会导致问题。
任何人都可以解释原因吗?
答案 0 :(得分:2)
这也发生在我身上。这可能是您列的数据类型的一些问题。试试这个:
.withColumn('%_diff_from_avg',
((col('aggregate_sales') - col('avg_sales')) / col('avg_sales') * 100.0))
它对我有用。