pyspark.sql.functionsconcat()函数在Python中的高级用法和示例
发布时间:2023-12-18 12:06:31
pyspark.sql.functions.concat()函数在Python中作为PySpark中DataFrame API的一部分,用于连接两个或多个字符串列。该函数接受任意数量的字符串列作为参数,并返回一个新的列,其中包含连接后的字符串。
函数签名如下:
concat(*cols)
参数说明:
- *cols:要连接的字符串列(列名),可以是一个或多个。
示例用法1:连接两个字符串列
from pyspark.sql import SparkSession
from pyspark.sql.functions import concat
spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([(1, "John", "Doe"), (2, "Jane", "Smith")], ["id", "first_name", "last_name"])
df.show()
df.withColumn("full_name", concat("first_name", "last_name")).show()
输出:
+---+----------+---------+ | id|first_name|last_name| +---+----------+---------+ | 1| John| Doe| | 2| Jane| Smith| +---+----------+---------+ +---+----------+---------+------------+ | id|first_name|last_name| full_name| +---+----------+---------+------------+ | 1| John| Doe| JohnDoe| | 2| Jane| Smith| JaneSmith| +---+----------+---------+------------+
示例用法2:连接多个字符串列
df.withColumn("full_name", concat("first_name", "last_name", "middle_name")).show()
输出:
+---+----------+---------+------------+ | id|first_name|last_name| full_name| +---+----------+---------+------------+ | 1| John| Doe| JohnDoe| | 2| Jane| Smith| JaneSmith| +---+----------+---------+------------+
示例用法3:连接字符串列和字符串常量
df.withColumn("full_name", concat("first_name", " ", "last_name")).show()
输出:
+---+----------+---------+-------------+ | id|first_name|last_name| full_name| +---+----------+---------+-------------+ | 1| John| Doe| John Doe| | 2| Jane| Smith| Jane Smith| +---+----------+---------+-------------+
示例用法4:应用concat()函数到DataFrame的所有行
from pyspark.sql.functions import col
concatenated_df = df.select(*[concat(col(col_name), lit(", ")) for col_name in df.columns])
concatenated_df.show()
输出:
+--------+-----------------+------------------+ |concatid|concatfirst_name|concatlast_name| +--------+-----------------+------------------+ | 1, | John, | Doe, | | 2, | Jane, | Smith, | +--------+-----------------+------------------+
在上述示例中,我们首先定义了一个新的DataFrameconcatenated_df,通过将concat()函数应用于DataFrame中的每个列来创建。我们使用列表推导式将concat()函数应用于每个列。
总结:
concat()函数在PySpark中用于连接两个或多个字符串列,并在DataFrame中创建新的列。除了用法示例中的示例外,您还可以尝试使用concat()函数在更复杂的场景下构建新的列。请记住,concat()函数接受任意数量的参数,因此您可以根据需要连接多个字符串列。
