[英]How would I subtract N specific rows from a PySpark DataFrame?
我有一個數據nsdf
,我想對其中的 5% 進行采樣。 nsdf
看起來像這樣:
col1 8 7 7 8 7 8 8 7 (... and so on)
我像這樣對nsdf
采樣:
sdf = nsdf.sample(0.05)
然后我想從nsdf
刪除sdf
中的行。 現在,在這里我想我可以使用nsdf.subtract(sdf)
但會刪除所有行nsdf
從匹配任何一行sdf
。 例如,如果sdf
包含
col1 7 8
然后nsdf
每一行都將被刪除,因為它們都是 7 或 8。有沒有辦法只刪除sdf
中出現的sdf
(或其他)的數量? 更具體地說,在這個例子中,我希望最終得到一個包含相同數據但少一個 7 和一個 8 的nsdf
。
如果存在於右側數據框中,則subtract
的行為是刪除左側數據框中一行的所有實例。 您正在尋找的是exceptAll
。
數據設置
df = spark.createDataFrame([(7,), (8,), (7,), (8,)], ("col1", ))
df1 = spark.createDataFrame([(7,), (8,)], ("col1", ))
df.exceptAll(df1).show()
+----+
|col1|
+----+
| 7|
| 8|
+----+
df2 = spark.createDataFrame([(7,), (7,), (8,)], ("col1", ))
df.exceptAll(df2).show()
+----+
|col1|
+----+
| 8|
+----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.