Dataframe 按类型从pyspark数据帧中删除行
我在pyspark中有一个包含产品项的大文件,其中一些是精确数字,另一些包含字符串。 我想从数据帧中删除所有带数字的行项目(计算效率高) 如何按pyspark dataframe列中的项目类型筛选行? pyspark过滤器功能似乎没有相应的功能Dataframe 按类型从pyspark数据帧中删除行,dataframe,apache-spark,filter,pyspark,Dataframe,Apache Spark,Filter,Pyspark,我在pyspark中有一个包含产品项的大文件,其中一些是精确数字,另一些包含字符串。 我想从数据帧中删除所有带数字的行项目(计算效率高) 如何按pyspark dataframe列中的项目类型筛选行? pyspark过滤器功能似乎没有相应的功能 spark中的k列均为同一类型。如果将两个列与一个并集混用(例如不同类型),spark将尝试转换为这两个列的有效类型,通常是字符串,并放置值的字符串表示形式 示例: 一个字符串列和一个浮点,将导致一个字符串列,浮点表示为一个带小数点的字符串字符串+浮点
spark中的k列均为同一类型。如果将两个列与一个
并集混用(例如不同类型),spark将尝试转换为这两个列的有效类型,通常是字符串
,并放置值的字符串表示形式
示例:
- 一个
字符串
列和一个浮点
,将导致一个字符串
列,浮点表示为一个带小数点的字符串<代码>字符串+浮点=>字符串
Integer
列联合AFloat
将所有整数转换为Float<代码>整数+浮点=>Floatval stringsDF = df.filter(regex_extract($"column", "[0-9]+([.|,][0-9]+)?") === ""))
这将保留所有不跟随浮点或整数值的值。spark中的列都是相同类型的。如果将两个列与一个
并集混用(例如不同类型),spark将尝试转换为这两个列的有效类型,通常是字符串
,并放置值的字符串表示形式
示例:
- 一个
字符串
列和一个浮点
,将导致一个字符串
列,浮点表示为一个带小数点的字符串<代码>字符串+浮点=>字符串
Integer
列联合AFloat
将所有整数转换为Float<代码>整数+浮点=>Floatval stringsDF = df.filter(regex_extract($"column", "[0-9]+([.|,][0-9]+)?") === ""))
这将保留所有不跟随浮点或整数值的值。
将列转换为int
,然后仅过滤空值列
- 或者使用类似于
功能的.rlike
示例:
df.show()
#+---------+-----+
#| product|descr|
#+---------+-----+
#|Product-1| pj3f|
#|product-2| 12|
#+---------+-----+
df.filter(col("descr").cast("int").isNull()).show()
df.filter(~col("descr").rlike("^([\s\d]+)$")).show()
#+---------+-----+
#| product|descr|
#+---------+-----+
#|Product-1| pj3f|
#+---------+-----+
cast
将列转换为int
,然后仅过滤空值列
- 或者使用类似于
功能的.rlike
示例:
df.show()
#+---------+-----+
#| product|descr|
#+---------+-----+
#|Product-1| pj3f|
#|product-2| 12|
#+---------+-----+
df.filter(col("descr").cast("int").isNull()).show()
df.filter(~col("descr").rlike("^([\s\d]+)$")).show()
#+---------+-----+
#| product|descr|
#+---------+-----+
#|Product-1| pj3f|
#+---------+-----+
@anky,rlike
与正则表达式匹配,有点像like
@anky,rlike
与正则表达式匹配,有点像like