📜  PySpark 数据框基于其他列添加列(1)

📅  最后修改于: 2023-12-03 14:45:52.820000             🧑  作者: Mango

PySpark 数据框基于其他列添加列

在 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|
+-------+---+
使用 withColumn 方法添加列

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|
+-------+---+-----------+
使用 select 方法添加列

除了使用 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,我们可以使用 withColumnselect 方法基于其他列添加新列到 DataFrame 中。这使得我们能够执行复杂的数据转换和计算操作,并保持良好的性能和灵活性。

以上就是在 PySpark 中基于其他列添加新列的介绍。希望对你有所帮助!