Scala中的Spark数据帧列处理
我有一个数据框,它有一个列Scala中的Spark数据帧列处理,scala,dataframe,apache-spark,Scala,Dataframe,Apache Spark,我有一个数据框,它有一个列age\u job,应该被分成两个不同的列(age和job): 我能够使用以下代码将列拆分为数据帧: val tempDF=DF1.withColumn("_tmp", split($"age_job", ";")).select($"_tmp".getItem(0).as("age"),$"_tmp".getItem(1).as("job
age\u job
,应该被分成两个不同的列(age
和job
):
我能够使用以下代码将列拆分为数据帧:
val tempDF=DF1.withColumn("_tmp", split($"age_job", ";")).select($"_tmp".getItem(0).as("age"),$"_tmp".getItem(1).as("job"))
这将给出以下数据帧:
我需要创建一个数据框,其中包含拆分列
age
,job
,以及DF1中的所有列。如何实现这一点?您已经拥有了所有列,实际上只需将它们包含在最终的选择中即可
让我们来分析一下:
val tempDF=
//其中包含列:年龄、工作、婚姻、教育、默认值、平衡
DF1
//其中包含以下列:\ tmp、年龄\工作、婚姻、教育、默认值、余额
.withColumn(“_tmp”,split($“age_job”,“;”))
//其中包含列:年龄、职务
.选择(
$“_tmp”.getItem(0).as(“年龄”),
$“_tmp”.getItem(1).as(“作业”)
)
这应该符合你的要求,我认为:
val tempDF=
//其中包含列:年龄、工作、婚姻、教育、默认值、平衡
DF1
//其中包含以下列:\ tmp、年龄\工作、婚姻、教育、默认值、余额
.withColumn(“_tmp”,split($“age_job”,“;”))
//其中包含列:年龄、工作、婚姻、教育、默认值、余额
.选择(
$“_tmp”.getItem(0).as(“年龄”),
$“_tmp”.getItem(1).as(“作业”),
$“婚姻”,
$“教育”,
$“默认值”,
$“余额”
)
您可以直接选择所需的列,而无需使用with column
。您还可以使用括号表示法代替getItem
val tempDF = DF1.select(
split($"age_job", ";")(0).alias("age"),
split($"age_job", ";")(1).alias("job"),
$"marital",
$"education",
$"default",
$"balance"
)
以上所有答案都应该有效。
还有一个
val tempDF=DF1.带列(“年龄”,拆分($“年龄”;”)(0)).带列(“工作”,拆分($“年龄”;”))(1)).下拉($“年龄”;)tempDF.show
谨慎:但是,它会将列添加到数据帧的最末端