在点处拆分 PySpark 数据框列

Posted

技术标签:

【中文标题】在点处拆分 PySpark 数据框列【英文标题】:Split PySpark dataframe column at the dot 【发布时间】:2018-10-24 07:52:15 【问题描述】:

我已经在 Pandas 中尝试过以下方法,它可以工作。我想知道如何在 PySpark 中做到这一点?

输入是

news.bbc.co.uk

它应该在'.'处拆分它因此索引应该等于:

[['news', 'bbc', 'co', 'uk'], ['next', 'domain', 'name']]

index = df2.domain.str.split('.').tolist() 

有谁知道我会如何在 spark 而不是 pandas 中做到这一点?

谢谢

【问题讨论】:

Split Contents of String column in PySpark Dataframe 和 Splitting a column in pyspark 和 Pyspark Split Columns 可能重复 【参考方案1】:

使用“。”以不同的方式工作。将它与转义字符“\”一起使用确实有效。

df = df.withColumn('col_name', F.split(F.col('col_name'), '\.'))

【讨论】:

仍然对我不起作用,当我尝试拆分字符串 = 'a.b.c' 时,它会给出类似 [, , , , , ] 的结果 你用的是哪个版本的python? @AswinKs 使用 Python 3.5.2(databricks 运行时 5.5 LTS),适用于 df.withColumn('col_name', F.split(F.col('col_name'), '[\.]'))。我猜这是某种错误,或者我没有正确理解正则表达式(很有可能。) '[\.]' 而不是 '\.'为我工作@AswinKs【参考方案2】:

您可以使用pyspark.sql.functions.split 拆分str

import pyspark.sql.functions as F

df = df.withColumn('col_name', F.split(F.col('col_name'), '.'))

【讨论】:

【参考方案3】:
df.select(split("col_name", '[\.]'))

df.selectExpr("split(col_name, '[\.]')")

【讨论】:

以上是关于在点处拆分 PySpark 数据框列的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PySpark 中拆分数据框列

Pyspark:如何遍历数据框列?

python, pyspark : 获取 pyspark 数据框列值的总和

使用圆形函数转换 pyspark 数据框列不起作用(pyspark)

如何将 pyspark 数据框列中的值与 pyspark 中的另一个数据框进行比较

更新 pyspark 的数据框列