python - 如何在Python中以特定的输出格式将矩阵(从一个文件读取)写入另一个csv文件

标签 python csv matrix file-writing

我有一个 csv 文件,其中包含矩阵格式的数据,其示例如下所示:

index,col1,col2,col3,col4,col5,col6
col1_1,1,0.005744233,0.013118052,-0.003772589,0.004284689
col2_1,0.005744233,1,-0.013269414,-0.007132092,0.013950261
col3_1,0.013118052,-0.013269414,1,-0.014029249,-0.00199437
col4_1,-0.003772589,-0.007132092,-0.014029249,1,0.022569309
col5_1,0.004284689,0.013950261,-0.00199437,0.022569309,1

不,我想读取此文件中的数据并将其写入另一个 csv 文件,但我需要的格式是这样的:

col1_1,value,col1
col1_1,value,col2
col1_1,value,col3
.
.
.
col2_1,value,col1
col2_1,value,col2
.
.
.

所以基本上第一个元素将是第一列中的列名称,后跟该列的值和第一行中的元素。

我编写了这段代码,但它只是以错误的格式编写:

reader = csv.reader(open(IN_FILE, "r"), delimiter=',')
writer = csv.writer(open(OUT_FILE, "w"), delimiter=',')

with open(IN_FILE) as infile:
    with open(OUT_FILE, "w") as outfile:
        reader = csv.reader(infile, delimiter=",")
        writer = csv.writer(outfile, delimiter=",")
        writer.writerow(next(reader))
        for line in reader:
            writer.writerow([line[0],line[1]])

如何在 python 中执行此操作?

最佳答案

试试这个:

reader = csv.reader(open(IN_FILE, "r"), delimiter=',')
writer = csv.writer(open(OUT_FILE, "w"), delimiter=',')

with open(IN_FILE) as infile:
    with open(OUT_FILE, "w") as outfile:
        reader = csv.reader(infile, delimiter=",")
        writer = csv.writer(outfile, delimiter=",")

        first_row = None
        for line in reader:
            if first_row is None:
                first_row = line
            else:
                for index, col in enumerate(first_row[1:]):
                    writer.writerow([line[0],line[index + 1],col])

这似乎有效。尽管您的测试数据看起来缺少“col6”。

您的初始代码的问题是它没有循环遍历每一列和行。

关于python - 如何在Python中以特定的输出格式将矩阵(从一个文件读取)写入另一个csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36359072/

相关文章:

Python *args 属性错误

python - 导入错误 : 'No module named' *does* exist

基于 Is 返回逗号分隔名称的 Excel 公式,该公式应允许尽可能多的 IDea

java - 读取分号分隔的 csv

python - Matlab 与 Python : Reshape

c++ - 打印这个矩阵的 if 语句是什么

python - 列表索引必须是整数,而不是str错误

python - 迭代 Pandas 系列

sql - Hadoop - 在具有可变列的 CSV 文件集合上公开 SQL 接口(interface)

c - ANSI C - 右上三角矩阵的数值稳定回代算法