📅  最后修改于: 2023-12-03 15:07:46.131000             🧑  作者: Mango
在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值列,我们可以使用 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值列。