Python跨数据框匹配项目

时间:2017-03-09 23:08:21

标签: python pandas string-matching

我发现很多问题,人们希望匹配列表中的项目,但我的问题略有不同,造成一些麻烦。我在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 |

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

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

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

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

1 个答案:

答案 0 :(得分:1)

不是直接将数据加载到pandas中,而是使用xlrd解析Excel文件,使用正确的city | product | count条目重新格式化文件,并将其摄取到数据帧中。然后,您应该能够使用标准pandas.DataFrame.merge

与SKU交叉引用此列表