如何在pysparkDataframe中将只有字符的行与作为id的字母数字行分开?

j2datikz  于 2021-07-12  发布在  Spark
关注(0)|答案(2)|浏览(232)

我有一个pysparkDataframe,它有id列,它只有字符和字母数字组合作为标识符。
我想从Dataframe中删除仅字符ID。

predictions.select('client_id', 'probability').show(1000,False)

|client_id|probability
|RAJU     |[0.9998043367405032,1.9566325949689167E-4]|
|JMS      |[0.9998043367405032,1.9566325949689167E-4]|
|ATON     |[0.9998043367405032,1.9566325949689167E-4]|
|VK1234   |[0.9998043367405032,1.9566325949689167E-4]|
|KSC      |[0.9998043367405032,1.9566325949689167E-4]|
|K122229  |[0.9998043367405032,1.9566325949689167E-4]|

我试过了

predictions2 = predictions.filter(~predictions['client_id'].rlike('[a-zA-Z]'))

但我得到了空排

vpfxa7rd

vpfxa7rd1#

试试这个正则表达式:

predictions.filter(~predictions['client_id'].rlike('^[a-zA-Z]+$'))

正则表达式将删除所有带有字母的行,即使行中有数字。您需要确保行只包含字符,方法是指定字符串的开头和结尾, ^ 以及 $ . + 还需要指定字符串中有1个或多个字母。

0lvr5msh

0lvr5msh2#

您还可以检查否定:“ client_id 至少包含一个数字“:

predictions2 = predictions.filter(predictions["client_id"].rlike(r"\d"))

predictions2.show(truncate=False)  

# +---------+-------------------------------------------+

# |client_id|probability                                |

# +---------+-------------------------------------------+

# |VK1234   |[0.9998043367405032, 1.9566325949689167E-4]|

# |K122229  |[0.9998043367405032, 1.9566325949689167E-4]|

# +---------+-------------------------------------------+

相关问题