python - 使用 pyspark 连接三个数据框
问题描述
我有三个数据框:
df1: df2: df3:
+--- +--------+ +--------+-------+ +----+----------+
| id1|category| |category| values| | id2| values|
+----+--------+ +--------+-------+ +----+----------+
| 0| C| | A| v1| | 0| v2, v3|
| 1| B| | A| v2| | 1| v1|
| 2| C| | A| v3| | 2| v1, v3|
| 3| A| | B| v4| | 3|v1, V2, v3|
| 4| A| | B| v5| | 4| v3|
| 5| B| | B| v6| | 5| v1, v2|
| 6| C| | B| v7| | 6| v3|
| 7| A| | C| v8| +----+----------+
| 8| B| | C| v9|
| 9| B| | C| v10|
+----+--------+ | C| v11|
+--------+-------+
通过指令在 df1 和 df3 之间进行交叉连接后:
df=df1.crossJoin(df3.select("id2")).select("id1", "id2")
我想添加一个新列(newCloumn),必须像这样填写: 如果类别列包含值列 中的至少一个值,则为1 ,否则为0
解决方案
如果您还重命名两个数据框中的列“类别”(例如:类别 1 和类别 2),这将更实用。试试这个,我想这就是你要找的
df=df.select(col("id1").alias("id"), "id2")
df4=df.join(df1, df.id==df1.id1).drop("id").join(df2, df4.category1==df2.category2)
推荐阅读
- c# - RabbitMQ 消费者作为 Windows Worker
- python-3.x - 在 gunicorn 中获取待处理的请求计数
- sql - 在原始表上分组时选择连接表中最新记录中的列
- java - 使用了@Transactional 但仍然得到:无法为当前线程获取事务同步会话
- cdi - Quarkus中bean的postConstruct和preDestroy方法的调用
- reactjs - TypeScript React onChanged:尝试在共享点中执行 Web 部件时出错
- reactjs - Ant 设计排序表代码不适用于反应打字稿
- graphql - 为 NestJs GraphQL 查询装饰器设置多种返回类型
- python - 文本位置不显示在情节上
- wordpress - 在 htaccess 中正确重定向到 www