📜  在 PySpark DataFrame 中将单列拆分为多列(1)

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

在 PySpark DataFrame 中将单列拆分为多列

在 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]  |
+-----------+

可以看到,我们将单列数据拆分成了两列数据 nameage

接下来,我们可以通过 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|
+-----+---+

可以看到,我们成功将单列数据拆分成两列数据 nameage

代码片段如下:

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()