在点处拆分 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 数据框列的主要内容,如果未能解决你的问题,请参考以下文章
python, pyspark : 获取 pyspark 数据框列值的总和
使用圆形函数转换 pyspark 数据框列不起作用(pyspark)