我有一个csv文件包含了将近15000条记录。每行包含3种类型的数据,由一个制表符(\t)分隔。实际上,我想将第二列值随机替换为null!也许我会保持8000的原样,并将7000个值替换为null。有什么需要帮忙的吗?它看起来是这样的:
mccptt671#
@艾米莉,注意 $ 在“rnd”前面,在我的回答中。你应该做一个列比较,而不是值比较。 PS :无法发表评论,因为我是一个新手,因此有一个单独的答案。
$
PS
ee7vknir2#
将数据作为Dataframe读取生成新列 rnd 是一个从0到1的随机数make col2=col2时 rnd <0.5(如果要使50%的值为空)否则为空
rnd
import org.apache.spark.sql.functions.{lit, rand, when} import spark.implicits._ spark.read.option("header", "true").option("sep", "\t").csv(<your_path>) .withColumn("rnd", rand()) .withColumn("col2", when($"rnd" < 0.5, $"col2").otherwise(lit(null).cast(<col2_datatype_here>)))
2条答案
按热度按时间mccptt671#
@艾米莉,注意
$
在“rnd”前面,在我的回答中。你应该做一个列比较,而不是值比较。
PS
:无法发表评论,因为我是一个新手,因此有一个单独的答案。ee7vknir2#
将数据作为Dataframe读取
生成新列
rnd
是一个从0到1的随机数make col2=col2时
rnd
<0.5(如果要使50%的值为空)否则为空