使用Python从一个CSV文件提取指定数据并赋值给另一个CSV文件

1 投票
1 回答
1822 浏览
提问于 2025-04-18 00:48

我有一个csv文件,里面的数据长这样:

这里插入图片描述

我想从C列提取数据,然后把这些数据写入一个新的csv文件,格式如下:

这里插入图片描述

所以我需要做两件事:

  • 在第一行第一列写上'node'和数字1到22(因为在这个例子中,输入csv的A列里有22个重复的循环)

这里插入图片描述

  • 我已经从C列提取了数据,并写入输出csv,像这样:

这里插入图片描述

我需要每22行转置一次这些数据,并从Excel的B2位置开始填入,然后是B3、B4等等。

很明显,我必须遍历每一行才能高效地完成这个任务,但我不知道怎么在Python中使用csv模块。

我需要下载xlrd包吗,还是只用内置的csv模块就可以处理这个问题?

我正在使用Python 2.7.6和Windows 8.1 x64下的pyscripter。欢迎给我任何建议,非常感谢!

1 个回答

1

阅读一下Python的csv文档

用csv读取器遍历行的简单方法:

import csv

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

这段代码会创建一个变量,里面存放了所有的csv数据。由于你的文件结构,读取起来可能会有点困难,因为单元格之间用','来分隔,但每个单元格内也有多个逗号,而且由于有括号,里面会混合字符串和数字数据,这样就需要进行一些清理。如果你能重新格式化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文件。

撰写回答