簡體   English   中英

如何從 PySpark DataFrame 中減去 N 特定行?

[英]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|
+----+

場景2:

df2 = spark.createDataFrame([(7,), (7,), (8,)], ("col1", ))

df.exceptAll(df2).show()

輸出

+----+
|col1|
+----+
|   8|
+----+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM