📅  最后修改于: 2023-12-03 14:45:52.820000             🧑  作者: Mango
在 PySpark 中,我们可以使用 DataFrame 的函数和表达式来基于其他列添加新列。这允许我们进行复杂的数据转换和计算,同时保持良好的性能和灵活性。
首先,让我们创建一个示例数据以便演示如何基于其他列添加新列。
from pyspark.sql import SparkSession
# 创建 SparkSession 对象
spark = SparkSession.builder.getOrCreate()
# 创建示例数据
data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)]
df = spark.createDataFrame(data, ["name", "age"])
df.show()
输出结果:
+-------+---+
| name|age|
+-------+---+
| Alice| 25|
| Bob| 30|
|Charlie| 35|
+-------+---+
PySpark 数据框提供了 withColumn
方法用于添加新列到现有数据框中。我们需要提供新列的名称和一个计算新列的表达式。表达式可以基于其他列进行计算。
下面的示例演示了如何基于年龄列添加一个新的 age_plus_10
列,该列的值是 age
加上 10。
from pyspark.sql.functions import col
# 使用 withColumn 方法添加列
df_with_new_column = df.withColumn("age_plus_10", col("age") + 10)
df_with_new_column.show()
输出结果:
+-------+---+-----------+
| name|age|age_plus_10|
+-------+---+-----------+
| Alice| 25| 35|
| Bob| 30| 40|
|Charlie| 35| 45|
+-------+---+-----------+
除了使用 withColumn
方法,我们还可以使用 select
方法添加列。这种方法通常用于需要选择多个列或执行其他操作的情况。
下面的示例演示了如何使用 select
方法添加一个新的 age_plus_10
列。
# 使用 select 方法添加列
df_with_new_column = df.select("*", col("age") + 10).withColumnRenamed("(age + 10)", "age_plus_10")
df_with_new_column.show()
输出结果:
+-------+---+-----------+
| name|age|age_plus_10|
+-------+---+-----------+
| Alice| 25| 35|
| Bob| 30| 40|
|Charlie| 35| 45|
+-------+---+-----------+
使用 PySpark,我们可以使用 withColumn
或 select
方法基于其他列添加新列到 DataFrame 中。这使得我们能够执行复杂的数据转换和计算操作,并保持良好的性能和灵活性。
以上就是在 PySpark 中基于其他列添加新列的介绍。希望对你有所帮助!