0

我有一个元组列表。每个元组包含 2 个值,以及两个值之间的运算结果。这是一个例子:

my_list = [(1,1,1.0), (1,2,0.8), (1,3,0.3), (2,1,0.8), (2,2,1.0), (2,3,0.5), (3,1,0.3), (3,2,0.5), (3,3,1.0)]

我需要将此值存储在 csv 文件中,以便它们看起来像这样:

0    1     2     3
1    1    0.8   0.3
2   0.8    1    0.5
3   0.3   0.5    1

换句话说,每次元组的第一个数字发生变化时,我都需要转到一个新行。

这是我目前正在使用的函数,它将每个元组写入一个新行(不是我想要的):

def write_csv(my_list, fname = ''):
    with open (fname, mode='a+') as f:
        f_writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
        for x in my_list:
            f_writer.writerow([str(x[0]), str(x[1]), str(x[2])])

关于如何修改(从头开始重写)的任何建议?

4

1 回答 1

1

您可以结合使用 Numpy 和 Pandas Python 库。

import pandas as pd
import numpy as np

my_list = [(1,1,1.0), (1,2,0.8), (1,3,0.3), (2,1,0.8), (2,2,1.0), (2,3,0.5), (3,1,0.3), (3,2,0.5), (3,3,1.0)]

new_list = [cell[2] for cell in my_list] # Extract cell values
np_array = np.array(new_list).reshape(3,3) # Create 3x3 matrix
df = pd.DataFrame(np_array) # Create a dataframe
df.to_csv("test.csv") # Write to a csv

为清楚起见,数据框将如下所示:

df
     0    1    2
0  1.0  0.8  0.3
1  0.8  1.0  0.5
2  0.3  0.5  1.0

csv 文件将如下所示:

,0,1,2
0,1.0,0.8,0.3
1,0.8,1.0,0.5
2,0.3,0.5,1.0
于 2020-06-24T01:45:36.610 回答