有一个包含文本的“备注”列的数据框。我想通过检查备注列长度来添加新列。例如,如果备注列的长度== 2,我需要拆分($“备注”,“”)(1)。否则我会把备注栏视为原样。
例如:remarks =“xxxx yyyy”,我希望count应该是2,如果是这种情况,我需要将yyyy作为我们正在添加的新列中的值。
这是我尝试过的代码,但没有得到预期的结果。
val df1 = df.withColumn("remarks1",when(length(split(col($"remarks")," ") === 2),col($"remarks").split(" ")(1)).otherwise(col($"remarks")))
使用上面的代码,我收到错误:
线程“main”中的异常org.apache.spark.sql.AnalysisException:remarks由于数据类型不匹配,无法解析'(split(,'')= 2)':'(split(remarks,'')= 2)中的不同类型'(array和int)。;; '项目[备注#33,dv#37,dp#42,dv1#48,sig#55,en#63,es#72,案例时长度((拆分(备注#33,)= 2))然后拆分(备注#33,)[1] ELSE cefversion#33 END AS备注1#107]
缩小问题的范围,这是正确的方法:
val df1 = df.withColumn("remarks1", when(size(split($"remarks" ," ")) === 2,split($"remarks"," ")(1)).otherwise(col("remarks")))
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。