簡體   English   中英

如何從 Pyspark 中的 DataFrame 中獲取這種子集?

[英]How to get this kind of subset from a DataFrame in Pyspark?

比如我有下面的DataFrame

+-----+----+------+
| idx | id | type |
+-----+----+------+
|   0 | 10 | a    |
|   1 | 10 | b    |
|   2 | 20 | b    |
|   3 | 30 | a    |
+-----+----+------+

我想要通過以下順序步驟獲得這樣的子集:

  1. 獲取type a 的所有id
    • 過濾后的id1030
  2. 獲取id與上面相同的所有行
    • 0 , 13被選中

結果子集 DataFrame 是:

+-----+----+------+
| idx | id | type |
+-----+----+------+
|   0 | 10 | a    |
|   1 | 10 | b    |
|   3 | 30 | a    |
+-----+----+------+

如何在pyspark中實現這一點? 提前致謝。


另一個后續問題,如何實現以下。

如果步驟更改為:

  1. 獲取id與上面不同的所有行
    • 2行被選中,因為只有這一行的id不是1030

生成的 DataFrame 應該是:

+-----+----+------+
| idx | id | type |
+-----+----+------+
|   2 | 20 | b    |
+-----+----+------+

您可以使用過濾器和連接操作。 1.

filterDF = dataDF.filter(dataDF.type == "a")
joinedDS = dataDF.join(filterDF, on="id")

對於第 2 點,您可以使用 left_anti 加入

joinedDS1 =  dataDF.join(joinedDS, on="id", how='left_anti')

暫無
暫無

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

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