使用正则表达式从Pyspark中的描述中获取数量

我有一个捕获代码及其描述的数据框,我们需要从描述中提取数量。我如何使用正则表达式提取数量,就像数字后跟G / KG / L / ML

df

code description
1    ABC CHILLIE POWDER 100G
2    DEF POWDER 200G
3    DIL PDWR POWDER 100G
4    RAIN HILL HERB SOU GREED 40G 2 1FRE
5    DEAR CHILLI 200G+COCO POWDER 330ML
6    DIL PDWR 10L POWDER

result_df

code description                                 qty
1    ABC CHILLIE POWDER 100G                     100G
2    DEF POWDER 200G                             200G
3    DIL PDWR POWDER 100G                        100G
4    RAIN HILL HERB SOU GREED 40G 2 1FRE         40G
5    DEAR CHILLI 200G+COCO POWDER 330ML          200G
6    DIL PDWR 10L POWDER                         10L

我正在使用

df.withColumn("qty",F.regex_extract(F.col("description"),"\dG",1)
xiaoyan198607 回答:使用正则表达式从Pyspark中的描述中获取数量

您可以使用

df.withColumn("qty",F.regex_extract(F.col("description"),r"(\d+\s?(?:K?G|M?L))\b",1)

(\d+\s?(?:K?G|M?L))\b模式匹配

  • (\d+\s?(?:K?G|M?L))-捕获组1:
    • \d+-1个以上的数字
    • \s?-1或0个空格,然后
    • (?:K?G|M?L)-可选的KG或可选的M然后是L
  • \b-单词边界。

请参见regex demo

本文链接:https://www.f2er.com/3152406.html

大家都在问