如何合并两个熊猫数据框[重复]

Posted

技术标签:

【中文标题】如何合并两个熊猫数据框[重复]【英文标题】:How to merge two pandas dataframeI [duplicate] 【发布时间】:2021-07-28 03:34:25 【问题描述】:

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

感谢您的帮助!!

【问题讨论】:

【参考方案1】:

你可以试试这个

merged = pd.merge(df1, df2, on='year')

来源:how to merge two data frames based on particular column in pandas python?

【讨论】:

【参考方案2】:

您需要一个完整的外部联接,以免丢失来自 df1 的任何销售或来自 df2 的产品:

merged = pd.merge(df1,df2, how = "outer", right_on=["Article ID", "Year ID", "Week ID", "Store ID"], left_on=["Article", "Year", "Week", "Store"])

【讨论】:

感谢您的回答。现在我得到一个内存错误“无法分配 2.25GiB”。然后 len 大约是 750 万行。最初 df1 大约是 630 万行,而 df2 是 735K 行。我什至无法打印它以查看是否准确。你有什么想法 ?谢谢!! 尝试使用一个子集,看看它是否正常工作:merged = pd.merge(df1[:100],df2[:100], how = "outer", right_on=["Article ID", "Year ID", "Week ID", "Store ID"], left_on=["Article", "Year", "Week", "Store"])

以上是关于如何合并两个熊猫数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

合并两个数据框而不重复熊猫

合并一个值在另外两个之间的熊猫数据框[重复]

具有两个以上数据框的熊猫的外部合并[重复]

熊猫两个数据框交叉连接[重复]

数据框合并在熊猫(0.7.3)中创建重复记录

如何合并/连接两个不同长度的熊猫数据框?