【问题标题】:Python matching items across dataframes跨数据框的 Python 匹配项
【发布时间】:2017-03-09 23:08:20
【问题描述】:

我发现了很多问题,人们希望匹配列表中的项目,但我的问题略有不同,造成了一些麻烦。我在 Windows 7 机器上使用 Python 3.6。

假设我是一家杂货连锁店的首席执行官,每周我都会收到一个 Excel 文件,其中包含每家商店的每件商品的库存量。其中有 2 列,第一列商店所在城市和商品名称,第二列商品数量。每个项目在每个项目之前都有 4 个空格,而城市没有空格,但两者都在同一列中。

|New York   |NAN|
|   Apples  |10 |
|   Oranges |20 |
|   Pears   |30 |
|Los Angeles|NAN|
|   Apples  |20 |
|   Oranges |40 |
|Dallas     |NAN|
|   Apples  |30 |
|   Oranges |60 |
|   Pears   |90 |

这需要每周一次上传到服务器以进行库存控制。我在 pandas 数据框中也有与每个商店和项目相关的 SKU 的交叉引用。

困难的部分来了。我现在想将其与我的 SKU 匹配,以便我可以正确获取每个商店的每个 sku 的库存。我的库存数据框是:

|City|Item     |#|
|NY  | Apples  |?|
|NY  | Oranges |?|
|NY  | Pears   |?|
|LA  | Apples  |?|

我的想法是首先查看纽约的列表,一旦找到纽约,就逐行向下迭代,直到找到我的水果。问题如图所示,洛杉矶没有梨,如果纽约用完,这条线就会丢失,而不仅仅是库存的 0。所以一个 for 循环将迭代直到它到达达拉斯并使用它的库存而不是返回纽约没有梨。简而言之,我如何确保 for 循环不会越过我尝试获取的城市并返回不同的城市库存?

【问题讨论】:

    标签: python pandas string-matching


    【解决方案1】:

    不要直接将数据加载到 pandas 中,而是使用 xlrd 解析 Excel 文件,以使用正确的 city | product | count 条目重新格式化文件并将其提取到数据框中。然后,您应该能够使用标准 pandas.DataFrame.merge 对照 SKU 交叉引用此列表

    【讨论】:

      猜你喜欢
      • 2016-01-23
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多