从一个csv文件中提取指定的数据,然后使用python分配给另一个csv文件

时间:2014-04-01 08:00:54

标签: python python-2.7 csv

我有一个包含此格式数据的csv文件,

enter image description here

我想从 C列中提取数据并将其写入新的csv文件,如下所示,

enter image description here

所以我需要做两件事:

  • 写'节点'并且在第一行和第一列中编号从1到22(因为在这种情况下,输入csv中A列中的一个重复周期中有22个)

enter image description here

  • 我已经在列c中提取了数据并在输出csv中写入,就像这样,

enter image description here

我需要每隔22行转换一次这些数据,然后从excel中的B2位置开始填充行,然后填写B3,B4等......

很明显,我必须循环遍历每一行才能有效地执行此操作,但我不知道如何在python中应用csv模块。

我应该下载xlrd软件包,还是只能使用内置的csv模块来处理它?<​​/ p>

我在Windows 8.1 x64下使用python 2.7.6和pyscripter。随意给我任何建议,非常感谢!

1 个答案:

答案 0 :(得分:1)

阅读the csv python documentation

使用csv reader迭代行的简单方法:

import csv

X = []
spamreader = csv.reader('path_to_file/filename.csv',delimiter=',')
for row in spamreader:
    X.append(row)

这将创建一个包含所有csv数据的变量。文件的结构将使其难以阅读,因为cell_separator是','但每个单元格中也有多个逗号,并且由于括号,将存在需要一些清理的字符串和数字数据的混合。如果您有权重新格式化csv,如果每个单元格看起来像1,2,0.01而不是(1,2,0.01)可能更容易,也可以考虑在单元格之间使用不同的分隔符,例如';'。

如果不期待一些繁琐的数据清理,请务必阅读上面链接的文档。

编辑:尝试以下

import csv
X = [] 
with open('path_to_file/filename.csv','rb') as csvfile:
    spamreader = csv.reader(csvfile,delimiter=',')
    for row in spamreader:
        rowTemp = []
        for i in range(len(row)):
            if (i+1)%3==0:  #gets every third cell
                rowTemp.append(row[i])
        X.append(rowTemp)

这是所有距离值的矩阵。然后尝试:

with open('path_to_output_file/output_file.csv','wb') as csvfile:
spamwriter = csv.writer(csvfile,delimter=',')
for sublist in X:
    spamwriter.writerow(sublist)

不确定这是否正是您正在寻找的,但它应该接近。它输出一个剥离了所有节点对的csv文件