【发布时间】:2021-08-05 05:11:42
【问题描述】:
我有一个包含这些值的数据框 - 商店 ID、商品是否可用(0 或 1)以及可用性百分比。
Store ID Item_1_Available Percent Available
100 0 0
200 1 0.2
300 0 0
400 1 0.9
还有一个数据框用于不同的项目和可用性指标。这里可能也有来自第一个表的商店 ID - 同一家商店出售不同的商品
Store ID Item_2_Available Percent Available
400 1 0.8
600 1 0.7
700 0 0
100 1 0.5
我正在尝试获得一张决赛桌(包含以下结构的 50 多个项目)。
Store ID Item_1_Available Percent Available Item_2_Available Percent Available
100 0 0 1 0.5
200 1 0.2 0 0
300 0 0 0 0
400 1 0.9 1 0.8
600 0 0 1 0.7
700 0 0 0 0
我尝试使用 spark 进行相交以获得决赛桌,以便我可以找到同时拥有第 1 项和第 2 项的商店。
from functools import reduce
from pyspark.sql import DataFrame
def intersect(*dfs):
return reduce(DataFrame.intersect, dfs)
final_table = intersect(df1, df2)
但它只返回第一个表中的一列作为输出。
Store ID Item_1_Available
100 1
200 0
300 0
400 1
有没有办法只对两个表进行连接以获得最终表?
【问题讨论】:
-
根据哪一列比较两个数据框?
-
@Yukeshkumar 应该是根据Store ID来的
-
您需要的是
full_outer加入Store ID字段。 -
@samkart 不,full_outer join 将在最终表中创建重复的列。
-
然后,在最终数据帧中,您可以使用 dropDuplicates()。
标签: sql python-3.x pyspark