带pysp的Regex

2024-10-02 20:40:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我对pyspark很陌生,所以这里有一个非常基本的问题: 所以我有一个数据帧,看起来像这样:

|I  27-May-18 10:1...|false|
|I  27-May-18 10:1...|false|
|I  27-May-18 10:1...|false|
|I  27-May-18 10:1...|false|
|I  27-May-18 10:1...|false|
|W  27-May-18 10:1...|false|
|                 ...|false| ##this one should not be flagged
|W  27-May-18 10:1...|false|

如果开头没有W或I或E或U,我想把下面所有的行连接起来,之后应该是这样的:

^{pr2}$

为此,我认为我标记行,以某种方式将组分配给行,然后使用groupby语句。在

不过,我已经习惯于标记行,因为正则表达式不起作用:

所以它的正则表达式是:'^[EUWI]\s'

当我在pyspark中使用它时,它将返回所有错误。。。在

代码如下:

df_with_x5 = a_7_df.withColumn("x5", a_7_df.line.startswith("[EUWI]\s"))
##I am using start with thats why i can drop the `^`

为什么不需要我的正则表达式?在


Tags: 数据标记falsedfwithnotbethis
1条回答
网友
1楼 · 发布于 2024-10-02 20:40:29

如果要创建标志列,可以尝试substring

import pyspark.sql.functions as F

df=df.withColumn('flag', F.substring(df.columnName,1,1).isin(['W', 'I', 'E', 'U'])

它只检查第一个字母。在

但您可以放弃创建新列并直接filter行:

^{pr2}$

相关问题 更多 >