python - 如何从 Pyspark 中的 DataFrame 中获取这种子集?
问题描述
例如,我有以下 DataFrame
+-----+----+------+
| idx | id | type |
+-----+----+------+
| 0 | 10 | a |
| 1 | 10 | b |
| 2 | 20 | b |
| 3 | 30 | a |
+-----+----+------+
我想要通过以下顺序步骤获得这样的子集:
- 得到所有
id
的type
- 过滤
id
的是10和30
- 过滤
id
获取与上面相同的 所有行- 行
0
,1
和3
被选中
- 行
生成的子集 DataFrame 是:
+-----+----+------+
| idx | id | type |
+-----+----+------+
| 0 | 10 | a |
| 1 | 10 | b |
| 3 | 30 | a |
+-----+----+------+
我怎样才能实现这个pyspark
?提前致谢。
另一个后续问题,如何实现以下。
如果步骤更改为:
- 获取与上面
id
不同的所有行- 行
2
被选中,因为只有这一行id
不是10或30
- 行
生成的 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')
推荐阅读
- postgresql - 无法从 myBinder 连接到托管在 Azure 上的 ubuntu VM 上的 postgres
- c - 为什么http post响应在响应末尾添加随机字符
- c++ - 使用 memcpy 复制地址的内存
- python-3.x - 使用 Numba 提高性能时出错:非常量值
- android - Android 10:dumpsys 输出中不再存在“mAppTransitionState”
- axios - 在 NestJS 中处理 HttpService 生成的 Observable
- c# - 是否需要使用 Cloud Firestore 设置数据库工厂?
- c - 如何访问文件传递的内容作为参数?
- algorithm - 返回给定列表中每个元素的“上级”数量的函数
- reactjs - React中页面重新加载后本地存储值重置为“Null”