Pyspark 如何检查列是否只包含某些字母
我有一个数据框,我想检查一个只包含字母a的列 这一栏有很多字母。它看起来像: aaaaaaaaaaaaaaaaaa aaabbbbbbbsbsbsbbb 我想检查此列是否只包含字母A,或者同时包含字母A或B,而不包含其他内容 你知道我应该使用哪种功能吗?像使用rlike一样使用。 官方文件中的示例:Pyspark 如何检查列是否只包含某些字母,pyspark,apache-spark-sql,pyspark-dataframes,Pyspark,Apache Spark Sql,Pyspark Dataframes,我有一个数据框,我想检查一个只包含字母a的列 这一栏有很多字母。它看起来像: aaaaaaaaaaaaaaaaaa aaabbbbbbbsbsbsbbb 我想检查此列是否只包含字母A,或者同时包含字母A或B,而不包含其他内容 你知道我应该使用哪种功能吗?像使用rlike一样使用。 官方文件中的示例: df.filter(df.name.rlike('ice$')).collect() [Row(age=2, name='Alice')] 使用rlike。 官方文件中的示例: df.filter
df.filter(df.name.rlike('ice$')).collect()
[Row(age=2, name='Alice')]
使用rlike。
官方文件中的示例:
df.filter(df.name.rlike('ice$')).collect()
[Row(age=2, name='Alice')]
试试这个:我考虑了四封信的样本。我们可以在spark中使用
rlike
函数。我使用了[^AB]
的正则表达式。这会将true
返回到除A
或B
之外的其他字母的列值,并且False
将显示到包含A或B或两者AB的值。我们可以过滤掉False
,这将是您的答案
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
spark = SparkSession.builder \
.appName('SO')\
.getOrCreate()
li = [[("AAAAAAAAAAAAAAAAAAABBBBBDBBSBSBB")], [("AAAAAAAAA")],[("BBBBBBBB")], [("AAAAAABBBBBBBB")]]
df = spark.createDataFrame(li, ["letter"])
df.show(truncate=False)
#
# +--------------------------------+
# |letter |
# +--------------------------------+
# |AAAAAAAAAAAAAAAAAAABBBBBDBBSBSBB|
# |AAAAAAAAA |
# |BBBBBBBB |
# |AAAAAABBBBBBBB |
# +--------------------------------+
df1 = df.withColumn("contains_A_or_B", F.col('letter').rlike("[^AB]"))
df.show(truncate=False)
+--------------------------------+---------------+
# |letter |contains_A_or_B|
# +--------------------------------+---------------+
# |AAAAAAAAAAAAAAAAAAABBBBBDBBSBSBB|true |
# |AAAAAAAAA |false |
# |BBBBBBBB |false |
# |AAAAAABBBBBBBB |false |
# +--------------------------------+---------------+
df1.filter(F.col('contains_A_or_B')==False).select("letter").show()
# +--------------+
# | letter|
# +--------------+
# | AAAAAAAAA|
# | BBBBBBBB|
# |AAAAAABBBBBBBB|
# +--------------+
试试这个:我考虑了四封信的样本。我们可以在spark中使用
rlike
函数。我使用了[^AB]
的正则表达式。这会将true
返回到除A
或B
之外的其他字母的列值,并且False
将显示到包含A或B或两者AB的值。我们可以过滤掉False
,这将是您的答案
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
spark = SparkSession.builder \
.appName('SO')\
.getOrCreate()
li = [[("AAAAAAAAAAAAAAAAAAABBBBBDBBSBSBB")], [("AAAAAAAAA")],[("BBBBBBBB")], [("AAAAAABBBBBBBB")]]
df = spark.createDataFrame(li, ["letter"])
df.show(truncate=False)
#
# +--------------------------------+
# |letter |
# +--------------------------------+
# |AAAAAAAAAAAAAAAAAAABBBBBDBBSBSBB|
# |AAAAAAAAA |
# |BBBBBBBB |
# |AAAAAABBBBBBBB |
# +--------------------------------+
df1 = df.withColumn("contains_A_or_B", F.col('letter').rlike("[^AB]"))
df.show(truncate=False)
+--------------------------------+---------------+
# |letter |contains_A_or_B|
# +--------------------------------+---------------+
# |AAAAAAAAAAAAAAAAAAABBBBBDBBSBSBB|true |
# |AAAAAAAAA |false |
# |BBBBBBBB |false |
# |AAAAAABBBBBBBB |false |
# +--------------------------------+---------------+
df1.filter(F.col('contains_A_or_B')==False).select("letter").show()
# +--------------+
# | letter|
# +--------------+
# | AAAAAAAAA|
# | BBBBBBBB|
# |AAAAAABBBBBBBB|
# +--------------+