直接从数据框中选择两列时是否可以添加两列

时间:2018-08-28 16:56:30

标签: apache-spark dataframe pyspark

我创建了一个数据框

'df1=spark.read.format("csv").option("delimiter","|").load(file)'

现在我要从该数据框中选择列

df1.select("col1","col2","col3")

这很好。但是我可以在同一条语句中合并两列。假设col1为age,col2为firstname,col3为lastname。我正在寻找以下将姓氏和名字结合在一起的输出。我知道可以使用sparksql完成。我想知道这可以在上面的df1.select()语句中完成。谢谢

col1  col2col3
23    JohnHarper
20    MarshallMathers

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情

df1.select("col1",concat("col2","col3"))

答案 1 :(得分:0)

您可以将concat函数用作

from pyspark.sql.functions import *
df1.select("col1",concat("col2","col3").alias("col2col3")).show(truncate=False)

或将concat_ws用作

df1.select("col1",concat_ws("", "col2","col3").alias("col2col3")).show(truncate=False)

或者您可以将udf函数用作

from pyspark.sql.functions import *
from pyspark.sql.types import *

@udf(StringType())
def concatenating(x, y):
    return "".join([x,y])

df1.select("col1", concatenating(col("col2"),col("col3")).alias("col2col3")).show(truncate=False)