如何合并两个熊猫数据框I

时间:2021-05-05 19:28:25

标签: python pandas dataframe join merge

我有 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?

感谢您的帮助!!

2 个答案:

答案 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"])