簡體   English   中英

將列作為數組添加到現有的csv文件中(Python)

[英]Adding a column to existing csv file as an array (Python)

具有以下格式的名為“ data.csv”的csv文件:

test1,test2,test3
1,2,3
4,5,6
7,8,9

給定格式為['test4',4,7,10]的列表,我該如何創建一個新的csv文件'adjusted.csv',其中包含來自data.csv的所有數據和添加的列,如下所示:

test1,test2,test3, test4
1,2,3,4
4,5,6,7
7,8,9,10

讀入

with open('data.csv', 'r') as fi:
    lines = [[i.strip() for i in line.strip().split(',')] \
             for line in fi.readlines()]

col = ['test4', 4, 7, 10]

將每一行與col相應元素連接起來。 使用枚舉可幫助跟蹤要使用的列表索引。

new_lines = [line + [str(col[i])] for i, line in enumerate(lines)]

輸出到文件

with open('adjusted.csv', 'w') as fo:
    for line in new_lines:
        fo.write(','.join(line) + '\n')

我只是將csv視為原始文本。 在每行中加載,去除換行符,添加新條目,然后放回換行符。 這僅在保證test4中的條目與data.csv中的行的順序相同的情況下才有效。

相反,如果需要基於滿足某些條件而將test4添加到行中,那將會帶來很多改變。 在這種情況下,您可能希望將兩者都轉換為Pandas數據框,然后在所需條件下執行適當的合並。

test4 = ['test4', 4, 7, 10]

with open(data.csv, 'r') as ifile 
    with open(adjusted.csv, 'w') as ofile:
        for line, new in zip(ifile, test4):
            new_line = line.rstrip('\n') + ',' + str(new) + '\n'
            ofile.write(new_line)

您也可以將前兩行壓縮為:

with open(data.csv, 'r') as ifile, open(adjusted.csv, 'w') as ofile:

做任何更清晰的閱讀。

由於您使用CSV文件,使用工作csv readerswriters ,以提高可讀性:

import csv

new_data =  ['test4', 4, 7, 10]
with open(r'data.csv', 'r') as in_csv, open(r'adj_data.csv', 'w') as out_csv:
    reader = csv.reader(in_csv)
    writer = csv.writer(out_csv)
    for row, new_col in zip(reader, new_data):
        row.append(new_col)
        writer.writerow(row)

暫無
暫無

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

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