鱼C论坛

 找回密码
 立即注册
查看: 1956|回复: 6

数据处理

[复制链接]
发表于 2020-4-17 16:47:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x


((仓库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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-17 16:56:36 | 显示全部楼层
?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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
订单数量,在途数量,金额,都是求和                                                       
                                                       
                                                       
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 17:55:41 | 显示全部楼层
读出数据和写入excel都是简单问题,关键是算法。编号和型号应该是对应关系吧?你可以编号或型号作为key,各个仓库的库存和在途的数量组成的列表为value,做成一个字典,遍历原始数据,key一致的记录,根据列表的序号来进行计算,完成后的数据就是下面的格式,可以写入excel了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

首先谢谢,
你的思路和我第一次的一样,我卡在了仓库的数组上面,如下:
{
     ‘(ZZ0002911,F3L50R06W1E3_B11)’:‘[19,0,0,200000]’,
}
第二条数据
{
     ‘(ZZ0002911,F3L50R06W1E3_B11)’:‘[19,2808,0,0,60000]’,
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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=[0,0,0,0,0,0]                  #北京仓库,深圳仓库,香港_A仓,在途数量,订单数量,金额
    newdata[warehouse.index(i[2])]=i[5]    #根据在warehouse中的序号来决定新表中的序号,将库存数量分配到对应仓库下
    newdata[3]=i[4]                        #在途数量
    newdata[4]=i[3]                        #订单数量
    newdata[5]=i[6]                        #金额
    if (i[0],i[1]) not in data1:
        data1[(i[0],i[1])]=newdata
    else:
        for j in range(len(newdata)):
            data1[(i[0],i[1])][j]+=newdata[j]

finaldata=[]
for k,l in data1.items(): 
    k=list(k)
    k.extend(l)
    finaldata.append(k)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-4-18 17:38:24 | 显示全部楼层

感谢,大概理解了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 22:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表