我有一个csv文件,它是国家之间交易的商品价值,类似这样:
Country Comm Value
GER 1 200
GER 2 300
GER 45 354
USA 2 100
USA 85 500
UK 2 240
UK 85 900
我用这些数据创建了一个矩阵。在这个创建的矩阵中,行是国家,列是商品代码,每个元素都显示贸易价值。商品数量为97,我使用以下代码创建了该矩阵:
^{pr2}$现在我要计算每对国家的指数得分(配对得分是:共同贸易总额超过每个国家的贸易总额)。 创建的矩阵具有如下形式:
Countries Commodity1 Commodity2 Commodity45 Commodity85
GER 200 300 45 0
USA 0 100 0 500
UK 0 240 0 900
首先,我想把两国正在进行贸易的同一种商品的总价值相加,然后除以这两个国家的贸易总额。例如,如果我们考虑GER-USA,他们都交易2号商品,所以我想把这些普通商品的总和(300+100) 德国和美国的贸易总额世界其他地区:200+300+354)+(第二排:100+500) 简而言之,如果我们考虑矩阵: 首先,我要计算GER和USA行的总值。 第二,计算所有正在交易的普通商品的价值 第三,将第二阶段的价值除以第一阶段的价值。 为此,我编写了以下代码:
for i in range(len(matrix_c1_products)):
for j in range(i, len(matrix_c1_products)):
dividend=sum([matrix_c1_products[i]])+sum([matrix_c1_products[j]])
for k in matrix_c1_products[i]:
for l in matrix_c1_products[j]:
# print k,l
if int(k)==int(0):
pass
if int(l)==int(0):
pass
else:
commonone.append(k)
commontwo.append(l)
divisor=sum(commonone)+sum(commontwo)
shares=int(divisor/dividend)
print shares, divisor, dividend
但是commonone列表有一个问题。我打算从两行中删除0并添加existence值,但由于循环的原因,相同的数字在列表中重复出现,结果不正确。 任何帮助都将不胜感激。在
作为一种更为python的方法,您可以首先创建一个行的字典,它可以通过以下dict理解来完成:
然后使用
^{pr2}$itertools.combinations
创建您的对:然后计算商品的总和:
最后,你可以循环计算出你的预期结果。在
结果:
相关问题 更多 >
编程相关推荐