从CSV文件中提取值然后与其他CSV的值相乘?蟒蛇

时间:2015-06-17 18:28:04

标签: python csv

我非常擅长编程和使用python。 我有一个20 x的CSV文件,并且具有各种概率值。看起来会像这样:

A      B     C    D    E
1      2     3    4    5
6      7     8    9    10
11     12    13   14 ...

我有一个20 x 1的第二个CSV文件看起来像这样(我可以改变第二个以适应我必须做的没有问题,但第一个我不能):

  A      B     C    D    E
  1      2     3    4     5

现在我需要做的是读取第一个CSV文件的每一行提取值并将其与受尊重的列相乘。并向他们取每行并找到行的总和。所以我希望输出为: 第一个如下

 A      B     C    D    E
 1x1    2x2   3x3  4x4  5x5
 6x1    7x2   8x3  9x4 ...       

最终结果是:

55
130
...

任何和所有的建议都会被贬低。 谢谢

2 个答案:

答案 0 :(得分:2)

以下是展示使用csv的一种方式。它重复而冗长,希望能给你一些研究和测试的东西。

#!/usr/bin/python

import csv
import re

file2_list = []

with open('2.csv', 'r') as fh2:
    reader = csv.reader(fh2)
    for row in reader:
        if re.search(r'\d', row[0]):
            file2_list = row
            break

with open('1.csv', 'r') as fh1:
    reader = csv.reader(fh1)
    for row in reader:
        if not re.search(r'[^\d]', row[0]):

            result = [] 

            for i,v in enumerate(row):
                result.append(int(v) * int(file2_list[i]))

            print(sum(result))

输入文件1:

a,b,c,d,e,f,g,h,i,j
1,2,3,4,5,6,7,8,9,10
11,12,13,14,15,16,17,18,19,20

输入文件2:

a,b,c,d,e,f,g,h,i,j
5,10,15,20,25,30,35,40,45,50

输出:

1925
4675

答案 1 :(得分:0)

你可以使用Pythons csv模块来读取csv文件,它记录在:

https://docs.python.org/2/library/csv.html#module-csv

要执行计算,如果您有大量数据,请使用numpy,因为它很快。 您正在计算的数字是您的多行表的每一行的内积,其中包含您的一行表中的唯一一行,即i.p.以下是:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.inner.html