【问题标题】:Split PySpark dataframe column at the dot在点处拆分 PySpark 数据框列
【发布时间】: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 中做到这一点?

谢谢

【问题讨论】:

标签: python-3.x apache-spark pyspark


【解决方案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, '[\.]')")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2022-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多