如何从Pyspark中的DataFrame中获取这种子集?

例如,我有以下DataFrame

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

我希望通过以下连续步骤获得这样的子集:

  1. 获取id中的所有type a
    • 已过滤的id 10 30
  2. 获取id与上面相同的所有行
    • 已选择行013

结果子集DataFrame为:

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

如何在pyspark中实现呢?预先感谢。


另一个后续问题,如何实现以下目标。

如果步骤更改为:

  1. 获取id与上一行不同的所有行
    • 选择了行2,因为只有该行的id不是 10 30

结果DataFrame应该是:

+-----+----+------+
| idx | id | type |
+-----+----+------+
|   2 | 20 | b    |
+-----+----+------+
LISA900205 回答:如何从Pyspark中的DataFrame中获取这种子集?

您可以使用过滤器和联接操作。 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')
本文链接:https://www.f2er.com/3151471.html

大家都在问