从大型csv中提取如下:
Description,Foo,Excl,GST,Incl
A,foo,$154.52,$15.44,$169.96
A,foo,$45.44,$4.54,$49.98
A,foo,$45.44,$4.54,$49.98
A,foo,$154.52,$15.44,$169.96
A,foo,$0.00,$0.00,$0.00
A,foo,$50.16,$5.02,$55.18
B,foo,$175.33,$15.65,$190.98
C,foo,$204.52,$15.44,$219.96
D,foo,$154.52,$15.44,$169.96
D,foo,$154.52,$15.44,$169.96
D,foo,$45.44,$4.54,$49.98
D,foo,$154.52,$15.44,$169.96
D,foo,$145.44,$14.54,$159.98
我需要去掉美元符号,对于包含匹配的Description
值(A
或B
或任何可能的值)的所有行,分别对Excl
列值、GST
列值和Incl
列值求和。你知道吗
最终结果应该是一个dictionary对象,包含作为键的Description
列,以及与Description
匹配的Excl
、GST
和Incl
列的总和,例如:
{
"A": [450.08,44.98,495.06],
"B": [175.33,15.65,190.98],
"C": [204.52,15.44,219.96],
"D": [654.44,65.40,719.84]
}
我完全搞不懂如何进行求和运算。我的代码只用于打开csv并读取每行的值。任何启迪都是值得赞赏的。你知道吗
import csv
def getField(rowdata, index):
try:
val = rowdata[index]
except IndexError:
val = '-1'
return val
with open(csv, 'r') as f:
reader = csv.reader(f)
order_list = list(reader)
# Remove the header row in csv
order_list.pop(0)
for row in order_list:
Desc = getField(row, 0)
Excl = getField(row, 2)
GST = getField(row, 3)
Incl = getField(row, 4)
这也许会有帮助
输出:
相关问题 更多 >
编程相关推荐