[英]remove rows from pyspark dataframe by type
我在 pyspark 中有一個包含產品項目的大文件,其中一些是准確的數字,其他包含字符串。 我想從 dataframe 中刪除所有帶有數字的行項目(計算效率高)。
|Product-1| Pj3f|
|Product-2| 12 |
|Product-3| Pj2F|
|Product-4| 20 |
如何按 pyspark dataframe 列中項目的類型過濾行? pyspark 過濾器 function 似乎沒有它的功能。
k
將該列cast
為int
,然后僅過濾null
值列。
.rlike
function Example:
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|
#+---------+-----+
spark 中的列都是同一類型。 如果您將兩列與不同類型的union
混合使用,spark 將嘗試將兩者轉換為有效類型,通常是String
,並放入值的字符串表示形式。
例子:
String
列和一個Float
,將生成一個String
列,其中浮點數以字符串形式表示,點表示小數點。 String + Float => String
Integer
column union a Float
會將所有整數轉換為 Floats。 Integer + Float => Float
對於你的情況將取決於,如果它是一個主題字符串或數字,我會 go 用於正則表達式過濾。
val stringsDF = df.filter(regex_extract($"column", "[0-9]+([.|,][0-9]+)?") === ""))
這將保留所有不遵循浮點數或 integer 值的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.