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