pyspark 将多个字符串列分解为行

kcwpcxri  于 5个月前  发布在  Spark
关注(0)|答案(1)|浏览(64)

我有一个pyspark框架,其中包含一些ID数据和2个位置列,它们是由逗号分隔的字符串:
| ID|国家|市|
| --|--|--|
| 1 |美国、墨西哥|加州墨西哥城|
| 2 |德国、法国、瑞典|慕尼黑,巴黎,斯德哥尔摩|
我想分解这些列,使它们成为新的行:
| ID|国家|市|
| --|--|--|
| 1 |美国|加州|
| 1 |墨西哥|墨西哥城|
| 2 |德国|慕尼黑|
| 2 |法国|巴黎|
| 2 |瑞典|斯德哥尔摩|
我如何才能做到这一点?

rkue9o1l

rkue9o1l1#

我们将结合使用:

  • arrays_zip
  • 爆炸
  • 分裂

假设df是你的框架:

df = df.withColumn(
    "data", F.explode(F.arrays_zip(F.split("Country", ","), F.split("City", ",")))
)

df.select(
    "ID", 
    F.col("data.0").alias("country"), 
    F.col("data.1").alias("city"),
).show()

+---+-------+-----------+
| ID|country|       city|
+---+-------+-----------+
|  1|    USA| California|
|  1| Mexico|Mexico City|
|  2|Germany|     Munich|
|  2| France|      Paris|
|  2| Sweden|  Stockholm|
+---+-------+-----------+

字符串

相关问题