Apache spark 如何用单个逗号替换多个逗号并计算Pyspark数据帧每行中的字数?
我有一个庞大的数据集,每行都有一些标题,它们之间用Apache spark 如何用单个逗号替换多个逗号并计算Pyspark数据帧每行中的字数?,apache-spark,pyspark,apache-spark-sql,pyspark-dataframes,Apache Spark,Pyspark,Apache Spark Sql,Pyspark Dataframes,我有一个庞大的数据集,每行都有一些标题,它们之间用,隔开。我想做两件事: 1-删除,,如果它们后面紧跟在一起 2-计算,之间的字数 例如,考虑以下两行: column hello, I am wondering/low,,, Going/hi, towards,, Host winter, summer,, 预期产出: column count hello, I am wondering/
,
隔开。我想做两件事:
1-删除,
,如果它们后面紧跟在一起
2-计算,
之间的字数
例如,考虑以下两行:
column
hello, I am wondering/low,,, Going/hi, towards,, Host
winter, summer,,
预期产出:
column count
hello, I am wondering/low, Going/hi, towards, Host 5
winter, summer, 2
1-删除,
,如果它们后面紧跟在一起
使用正则表达式使用函数将多个逗号替换为单个逗号。您可以使用regex,{2,}
,这意味着2个或更多的逗号
2-计算,
之间的字数
正如链接的另一个问题中所指出的,您需要简单地拆分这些值并获得数组的大小。但在这里,值的末尾可以有逗号,因此size
将大于实际单词。为此,必须首先使用数组来消除空字符串
from pyspark.sql.functions import regexp_replace, expr
data = [
("hello, I am wondering / low,,, Going / hi, towards,, Host",),
("winter, summer,,",)
]
df = spark.createDataFrame(data, ["column"])
df1 = df.withColumn("column", regexp_replace("column", ",{2,}", ",")) \
.withColumn("count",
expr("size(filter(split(column, ','), x -> nullif(x, '') is not null))")
)
df1.show(truncate=False)
#+------------------------------------------------------+-----+
#|column |count|
#+------------------------------------------------------+-----+
#|hello, I am wondering / low, Going / hi, towards, Host|5 |
#|winter, summer, |2 |
#+------------------------------------------------------+-----+
这回答了你的问题吗?是的,如果我有
,
,我想用,
分开单词,而不是空格。然后,当我有,
时,会出现问题使用,
拆分而不是空格,并用单个逗号替换多个逗号。我不确定我有多少个逗号。所以用替换是不可能的work@mck是否有任何代码表明,如果有多个,
,然后彼此删除并保留一个?为什么只给我计数列?