📜  在 PySpark DataFrame 中添加具有字面量值的列(1)

📅  最后修改于: 2023-12-03 15:07:46.131000             🧑  作者: Mango

在 PySpark DataFrame 中添加具有字面量值的列

在PySpark中,我们可以通过操作DataFrame来实现数据处理,通过添加列来生成新的DataFrame。有时,我们需要添加具有字面量值的列,这些字面量值可以是常量、布尔值、null值等。本文将介绍如何在PySpark DataFrame中添加具有字面量值的列。

添加常量值列

要添加一个常量值列,我们可以使用lit()函数。这个函数将一个常量转换为DataFrame中的列。

from pyspark.sql.functions import lit

# 创建一个DataFrame
df = spark.createDataFrame([(1, 'A'), (2, 'B'), (3, 'C')], ["id", "name"])

# 添加常量值列
df = df.withColumn("new_col", lit("D"))

df.show()

输出:

+---+----+-------+
| id|name|new_col|
+---+----+-------+
|  1|   A|      D|
|  2|   B|      D|
|  3|   C|      D|
+---+----+-------+

以上代码中,我们创建了一个DataFrame df,包含两列“id”和“name”。然后我们使用withColumn()方法添加了一个新列“new_col”,该列的值为常量“D”。lit()函数将常量“D”转换为DataFrame中的列。

添加布尔值列

添加的布尔值列与添加常量值列类似,我们只需使用Python中的True或False进行转化。

# 添加布尔值列
df = df.withColumn("bool_col", lit(True))

df.show()

输出:

+---+----+-------+--------+
| id|name|new_col|bool_col|
+---+----+-------+--------+
|  1|   A|      D|    true|
|  2|   B|      D|    true|
|  3|   C|      D|    true|
+---+----+-------+--------+

以上代码中,我们添加了一个名为“bool_col”的布尔值列。该列的每个值都是True。

添加 NULL 值列

要添加NULL值列,我们可以使用 lit(None)NULL

# 添加NULL值列
df = df.withColumn("null_col1", lit(None))
df = df.withColumn("null_col2", lit("NULL"))

df.show()

输出:

+---+----+-------+--------+---------+---------+
| id|name|new_col|bool_col|null_col1|null_col2|
+---+----+-------+--------+---------+---------+
|  1|   A|      D|    true|     null|     NULL|
|  2|   B|      D|    true|     null|     NULL|
|  3|   C|      D|    true|     null|     NULL|
+---+----+-------+--------+---------+---------+

以上代码中,我们添加了一个名为“null_col1”的列,该列的每个值都是 NULL。我们还添加了一个名为“null_col2”的列,该列中的值为字符串“NULL”。

综上所述,我们已经学会了如何在PySpark DataFrame中添加具有字面量值的列。通过使用lit()函数,我们可以向DataFrame添加常量、布尔值或NULL值列。