[英]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
readers
和writers
,以提高可讀性:
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.