uncle0 发表于 2020-4-17 16:47:43

数据处理



((仓库A,型号A,库存量1,在途量1),(仓库B,型号A,库存量2,在途量2),(仓库C,型号A,库存量3,在途量3)
(仓库A,型号B,库存量1,在途量1),(仓库B,型号B,库存量2,在途量2),(仓库C,型号B,库存量3,在途量3))

谁知道如何做成这样

                仓库A   仓库B           仓库C        在途量
型号A      库存量1库存量2        库存量2        在途量1+在途量2+在途量3
型号B   库存量1   库存量2        库存量2        在途量1+在途量2+在途量3

zedi 发表于 2020-4-17 16:56:36

?

uncle0 发表于 2020-4-17 17:31:51

[
('ZZ0002911', 'F3L50R06W1E3_B11', '北京仓库', 0, 0, 19, 200000),
('ZZ0002911', 'F3L50R06W1E3_B11', '深圳仓库', 0, 0, 2808, 400000),
('ZZ0002911', 'F3L50R06W1E3_B11', '香港_A仓', 0, 0, 0, 0),
('ZZ0002913', 'F3L80R12W1H3_B11', '北京仓库', 0, 0, 13, 5000),
('ZZ0002913', 'F3L80R12W1H3_B11', '深圳仓库', 0, 0, 0, 0),
('ZZ0002913', 'F3L80R12W1H3_B11', '香港_A仓', 0, 0, 0, 0)
]
我有这样的一组数据分别对应[编号,型号,仓库,订单数量,在途数量,库存数量,库存金额],希望按照下面的格式写入excel


编号                       型号                            北京仓库        深圳仓库       香港_A仓                在途数量                订单数量        金额
ZZ0002911       F3L50R06W1E3_B11        19                2808                0                        0                0                600000
ZZ0002913       F3L80R12W1H3_B11        13                0                        0                        0                0                5000
订单数量,在途数量,金额,都是求和                                                       
                                                       
                                                       

txxcat 发表于 2020-4-17 17:55:41

读出数据和写入excel都是简单问题,关键是算法。编号和型号应该是对应关系吧?你可以编号或型号作为key,各个仓库的库存和在途的数量组成的列表为value,做成一个字典,遍历原始数据,key一致的记录,根据列表的序号来进行计算,完成后的数据就是下面的格式,可以写入excel了。

uncle0 发表于 2020-4-18 11:45:40

txxcat 发表于 2020-4-17 17:55
读出数据和写入excel都是简单问题,关键是算法。编号和型号应该是对应关系吧?你可以编号或型号作为key,各 ...

首先谢谢,
你的思路和我第一次的一样,我卡在了仓库的数组上面,如下:
{
   ‘(ZZ0002911,F3L50R06W1E3_B11)’:‘’,
}
第二条数据
{
   ‘(ZZ0002911,F3L50R06W1E3_B11)’:‘’,
}

txxcat 发表于 2020-4-18 13:17:11

uncle0 发表于 2020-4-18 11:45
首先谢谢,
你的思路和我第一次的一样,我卡在了仓库的数组上面,如下:
{


data=[
('ZZ0002911', 'F3L50R06W1E3_B11', '北京仓库', 0, 0, 19, 200000),
('ZZ0002911', 'F3L50R06W1E3_B11', '深圳仓库', 0, 0, 2808, 400000),
('ZZ0002911', 'F3L50R06W1E3_B11', '香港_A仓', 0, 0, 0, 0),
('ZZ0002913', 'F3L80R12W1H3_B11', '北京仓库', 0, 0, 13, 5000),
('ZZ0002913', 'F3L80R12W1H3_B11', '深圳仓库', 0, 0, 0, 0),
('ZZ0002913', 'F3L80R12W1H3_B11', '香港_A仓', 0, 0, 0, 0)
]
warehouse=['北京仓库','深圳仓库','香港_A仓','在途']      
data1={}
newdata=[]
#原始数据:编号,型号,仓库,订单数量,在途数量,库存数量,库存金额
#新表数据:编号,型号,北京仓库,深圳仓库,香港_A仓,在途数量,订单数量,金额
for i in data:
    newdata=                  #北京仓库,深圳仓库,香港_A仓,在途数量,订单数量,金额
    newdata)]=i    #根据在warehouse中的序号来决定新表中的序号,将库存数量分配到对应仓库下
    newdata=i                        #在途数量
    newdata=i                        #订单数量
    newdata=i                        #金额
    if (i,i) not in data1:
      data1[(i,i)]=newdata
    else:
      for j in range(len(newdata)):
            data1[(i,i)]+=newdata

finaldata=[]
for k,l in data1.items():
    k=list(k)
    k.extend(l)
    finaldata.append(k)

uncle0 发表于 2020-4-18 17:38:24

txxcat 发表于 2020-4-18 13:17


感谢,大概理解了
页: [1]
查看完整版本: 数据处理