我如何 select 特定数据并改革我的数据结构? .csv python

How could I select particular data and reform my data structure? csv python

我有一个 matrix.csv 文件,看起来像这样,

  1,2,3,4 ............
1,A,B,C,D
2,E,F,G,H
3,I,J,K,L
4,M,N,P,Q
.
.
.
.

但是,我只需要数据的一个子集(因为B只是E^-1,C是I^-1等等,我不需要全部。)

  1,2,3,4 ........
1,A
2,E,F
3,I,J,K
4,M,N,P,Q
.
.
.
.
.

然后,我希望我能得到一个 result.csv 文件,如下所示,

1,1,A
2,1,E
2,2,F
3,1,I
3,2,J
3,3,K
4,1,M
4,2,N
4,3,P
4,4,Q
....
....
....
....

我已经尝试了一整天的解决方案,但仍然无法正常工作。有谁知道如何使用 python 解决这个问题?

谢谢,

这应该有效。基本上我只是将整个文件读入一个二维数组,然后遍历数组,每一行(i-loop)添加一列(j-loop)。

import csv, os
with open('in.csv', 'r') as csvfile:
    a = []
    for row in csv.reader(csvfile, delimiter=',', quotechar='|'):
        a += [ row ]

f = open('out.csv', 'w')
i = 0
for i in range(len(a[0])):
    i += 1
    for j in range(i):
        f.write(str(i) + "," + str(j+1) + "," + str(a[i][j+1]) + os.linesep)
f.close()

一个numpy解决方案如下。基本上你想要的只是用 axis_y >= axis_x:

列出这些值
from cStringIO import StringIO
import numpy as np

datacsv = StringIO("""A,B,C,D
E,F,G,H
I,J,K,L
M,N,O,P
""")

data = np.genfromtxt(datacsv, dtype='S1', delimiter=',', skip_header=False)

ROW, COL = data.shape
assert (ROW == COL)

indexes = np.arange(ROW*COL)
y = indexes/ROW
x = np.mod(indexes, ROW)
v = data.reshape(ROW*COL)

a = np.column_stack((x, y, v))[y >= x]
np.savetxt('output.csv', a, fmt='%s', delimiter=',')