【问题标题】:Split the column in pyspark拆分pyspark中的列
【发布时间】:2021-05-01 07:32:13
【问题描述】:

我试图在一堆分隔符上拆分 pyspark 中的一列:“_”、“-”、“|”、“\”、“/”等。所以如果数据框如下:

df = spark.createDataFrame([(1, "foo-23.aBD"), (2, "bar12/bg_$"),(3,"iO9_5Gh"),(4,"fg4555(dfd")],["id", "label"] )

我想在“标签”列中包含值“foo”、“bar12”、“i09”和“fg4555”。 我可以为每个分隔符单独执行此操作:

from pyspark.sql.functions import regexp_extract, col 

split_col = functions.split(df['label'], '-')
df = df.withColumn('label', split_col.getItem(0))
split_col = functions.split(df['label'], '_')
df = df.withColumn('label', split_col.getItem(0))
split_col = functions.split(df['label'], '/')
df = df.withColumn('label', split_col.getItem(0))

但它看起来不太好。有没有可能以更紧凑的方式做到这一点?提前致谢。

【问题讨论】:

    标签: dataframe pyspark split


    【解决方案1】:

    您可能希望在单词边界上进行拆分 (\b)。不知何故,_ 不是单词边界,因此您也需要将其添加到模式列表中。

    import pyspark.sql.functions as F
    
    df2 = df.withColumn('label', F.split('label', '(\\b|_)')[0])
    
    df2.show()
    +---+------+
    |id |label |
    +---+------+
    |1  |foo   |
    |2  |bar12 |
    |3  |iO9   |
    |4  |fg4555|
    +---+------+
    

    【讨论】:

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