簡體   English   中英

如何通過在第一行和第一列中添加靜態標題將矩陣寫入 python 中的 csv 文件?

[英]how to write a matrix to a csv file in python with adding static headers in first row and first column?

我有一個在運行相關后生成的矩陣 - mat = Statistics.corr(result, method="pearson") 現在我想將此矩陣寫入 csv 文件,但我想將標題添加到文件的第一行和第一列,以便輸出如下所示:

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

我有一個包含列名稱的列表 - colmn = ['col1','col2','col3','col4','col5','col6'] 上述格式中的index是一個靜態字符串,用於指示索引名稱。 我寫了這段代碼,但它只在第一行添加標題,但我也無法在第一列中獲取標題:

with open("file1", "wb") as f:
        writer = csv.writer(f,delimiter=",")
        writer.writerow(['col1','col2','col3','col4','col5','col6'])
        writer.writerows(mat)

如何將矩陣寫入 csv 文件,並將靜態標題指向第一行和第一列?

你可以使用pandas DataFrame.to_csv()默認同時寫入列標題和索引。

import pandas as pd
headers = ['col1','col2','col3','col4','col5','col6']
df = pd.DataFrame(mat, columns=headers, index=headers)
df.to_csv('file1')

另一方面,如果這不是一個選項,您可以在enumerate幫助下添加索引:

with open("file1", "wb") as f:
    writer = csv.writer(f,delimiter=",")
    headers = ['col1','col2','col3','col4','col5','col6']
    writer.writerow(['index'] + headers)
    # If your mat is already a python list of lists, you can skip wrapping
    # the rows with list()
    writer.writerows(headers[i:i+1] + list(row) for i, row in enumerate(mat))

您可以使用第一個變量來指示第一行,然后將每行名稱添加到所寫的行中:

cols = ["col2", "col2", "col3", "col4", "col5"]

with open("file1", "wb") as f:
    writer = csv.writer(f)
    first = True
    for i, line in enumerate(mat):
        if first:
            writer.writerow(["Index"] + cols)
            first = False
        else:
            writer.writerow(["Row"+str(i)] + line)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM