我发现很多问题,人们希望匹配列表中的项目,但我的问题略有不同,造成一些麻烦。我在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循环不会越过城市?我试图获取并返回不同的城市库存?
答案 0 :(得分:1)
不是直接将数据加载到pandas中,而是使用xlrd
解析Excel文件,使用正确的city | product | count
条目重新格式化文件,并将其摄取到数据帧中。然后,您应该能够使用标准pandas.DataFrame.merge