我有 2 个数据框要合并在一起。
Df1:销售数据框,仅包含已售产品。如果没有出售,不在那里。 2019/2020/2021 的第 1 至第 53 周
Year Week Store Article Sales Volume
2019 11 SF sku1 500
2021 16 NY sku2 20
2020 53 PA sku1 500
2021 01 NY sku3 200
2019 11 SF sku1 455
2021 16 NY sku2 20
df2:是一个股票数据框。整个产品系列,即使没有销售,它也会出现。每个 2019/2020/2021 年每个 ALL 产品仅在第 16 周存货
Year Week Store Article Stock Volume
2019 16 SF sku1 500
2021 16 NY sku2 20
2020 16 PA sku4 500
2021 16 NY sku5 200
2019 16 SF sku65 455
2021 16 NY sku2000 20
...
我尝试通过这样做来合并两个 dfs(我想获得所有文章,但缺点是我失去了其他几周):
merged = pd.merge(df1,df2, how = "right", right_on=["Article ID", "Year ID", "Week ID", "Store ID"], left_on=["Article", "Year", "Week", "Store"])
但我只得到了与第 16 周库存相关的销售价值,而我失去了所有其他周。
所以我尝试了左连接
merged = pd.merge(df1,df2, how = "left", right_on=["Article ID", "Year ID", "Week ID", "Store ID"], left_on=["Article", "Year", "Week", "Store"])
现在我有所有的星期,但我缺少一些产品库存
我需要保留 df2 的所有产品,同时还要保留 df1 的数周销售额。 有没有办法通过保留整个库存深度和整个销售周来合并两个 dfs?
感谢您的帮助!!
答案 0 :(得分:0)
你可以试试这个
merged = pd.merge(df1, df2, on='year')
来源:how to merge two data frames based on particular column in pandas python?
答案 1 :(得分:0)
为了不丢失来自 df1 的 Sales 或来自 df2 的 Product,您需要一个完整的外部联接:
merged = pd.merge(df1,df2, how = "outer", right_on=["Article ID", "Year ID", "Week ID", "Store ID"], left_on=["Article", "Year", "Week", "Store"])