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

谨慎:但是,它会将列添加到数据帧的最末端