📅  最后修改于: 2023-12-03 14:51:05.026000             🧑  作者: Mango
在 PySpark DataFrame 中,有时候我们需要将单列的数据拆分成多列,例如某列数据包含了姓名和年龄,我们需要将其分割开。
这时候可以使用 PySpark 的内置函数 split()
,将一个列拆分为多个列,例如:
import pyspark.sql.functions as F
# 创建示例 DataFrame
df = spark.createDataFrame([('Alice,25', ), ('Bob,30', )], ['name_age'])
# 使用 split() 函数拆分列
df = df.select(F.split(df['name_age'], ',').alias('name_age_split'))
df.show()
输出:
+-----------+
|name_age |
+-----------+
|[Alice, 25]|
|[Bob, 30] |
+-----------+
可以看到,我们将单列数据拆分成了两列数据 name
和 age
。
接下来,我们可以通过 PySpark DataFrame 中的 getItem()
函数,提取数组中的元素,例如:
# 提取数组元素
df = df.select(
F.col('name_age_split').getItem(0).alias('name'),
F.col('name_age_split').getItem(1).alias('age')
)
df.show()
输出:
+-----+---+
| name|age|
+-----+---+
|Alice| 25|
| Bob| 30|
+-----+---+
可以看到,我们成功将单列数据拆分成两列数据 name
和 age
。
代码片段如下:
import pyspark.sql.functions as F
# 创建示例 DataFrame
df = spark.createDataFrame([('Alice,25', ), ('Bob,30', )], ['name_age'])
# 使用 split() 函数拆分列
df = df.select(F.split(df['name_age'], ',').alias('name_age_split'))
# 提取数组元素
df = df.select(
F.col('name_age_split').getItem(0).alias('name'),
F.col('name_age_split').getItem(1).alias('age')
)
df.show()