我有一个pyspark数据框,有文本列。
我想用regex表达式来Map这些值。
df = df.withColumn('mapped_col', regexp_replace('mapped_col', '.*-RH', 'RH'))
df = df.withColumn('mapped_col', regexp_replace('mapped_col', '.*-FI, 'FI'))
另外,我想根据字典Map具体的值,我做了以下工作(Map器来自create\u map()):
df = df.withColumn("mapped_col",mapper.getItem(F.col("action")))
最后,没有被dictionnary或regex表达式Map的值将被设置为null。我不知道如何按照另外两个来做这部分。
有没有可能有一个类似于regex表达式的词汇表,这样我就可以重新组合这两个‘函数’?{”*-rh“:”rh“,”.*fi“:”fi“}
原始输出示例
+-----------------------------+
|message |
+-----------------------------+
|GDF2009 |
|GDF2014 |
|ADS-set |
|ADS-set |
|XSQXQXQSDZADAA5454546a45a4-FI|
|dadaccpjpifjpsjfefspolamml-FI|
|dqdazdaapijiejoajojp565656-RH|
|kijipiadoa
+-----------------------------+
预期输出示例
+-----------------------------+-----------------------------+
|message |status|
+-----------------------------+-----------------------------+
|GDF2009 | GDF
|GDF2014 | GDF
|ADS/set | ADS
|ADS-set | ADS
|XSQXQXQSDZADAA5454546a45a4-FI| FI
|dadaccpjpifjpsjfefspolamml-FI| FI
|dqdazdaapijiejoajojp565656-RH| RH
|kijipiadoa | null or ??
所以第一行和第四行用dictMap,另一行用regexMap。未Map为空或??谢谢您,
1条答案
按热度按时间nnsrf1az1#
你可以使用
contains
功能:输出: