簡體   English   中英

向現有 csv 文件添加新列

[英]add a new column to an existing csv file

我有一個包含 5 列的 csv 文件,我想在第 6 列中添加數據。 我擁有的數據在一個數組中。

現在,只有在 csv 文件中已經存在的所有數據之后,我擁有的代碼才會在第 6 列中插入我想要的數據。

例如我有:

wind, site, date, time, value
10, 01, 01-01-2013, 00:00, 5.1
89.6    ---> this is the value I want to add in a 6th column but it puts it after all the  data from the csv file

這是我正在使用的代碼:

csvfile = 'filename'
with open(csvfile, 'a') as output:
    writer = csv.writer(output, lineterminator='\n')
    for val in data:
        writer.writerow([val])

我以為使用'a'會將數據附加到新列中,但它只是將它放在 ('under') 所有其他數據之后......我不知道該怎么做!

追加將數據寫入文件的末尾,而不是每行的末尾。

相反,創建一個新文件並將新值附加到每一行。

csvfile = 'filename'
with open(csvfile, 'r') as fin, open('new_'+csvfile, 'w') as fout:
    reader = csv.reader(fin, newline='', lineterminator='\n')
    writer = csv.writer(fout, newline='', lineterminator='\n')
    if you_have_headers:
        writer.writerow(next(reader) + [new_heading])
    for row, val in zip(reader, data)
        writer.writerow(row + [data])

在 Python 2.x 上,刪除newline=''參數並將文件模式從'r''w'更改為'rb''wb'

一旦您確定這正常工作,您可以用新文件替換原始文件:

import os
os.remove(csvfile) # not needed on unix
os.rename('new_'+csvfile, csvfile)

csv模塊不支持寫入或附加列。 所以你唯一能做的就是:從一個文件讀取,附加第 6 列數據,然后寫入另一個文件。 這顯示如下:

with open('in.txt') as fin, open('out.txt', 'w') as fout:
        index = 0
        for line in fin:
            fout.write(line.replace('\n', ', ' + str(data[index]) + '\n'))
            index += 1

data是一個int列表。

我在 python 中測試了這些代碼,它運行良好。

我們有一個 CSV 文件,即 data.csv,其內容是:

#data.csv
1,Joi,Python
2,Mark,Laravel
3,Elon,Wordpress
4,Emily,PHP
5,Sam,HTML

現在我們要在這個 csv 文件中添加一列,並且該列中的所有條目都應該包含相同的值,即Something text

例子

from csv import writer
from csv import reader
new_column_text = 'Something text'

with open('data.csv', 'r') as read_object, \
    open('data_output.csv', 'w', newline='') as write_object:
    csv_reader = reader(read_object)
    csv_writer = writer(write_object)
    for row in csv_reader:
        row.append(new_column_text)
        csv_writer.writerow(row)

輸出

#data_output.csv
1,Joi,Python,Something text
2,Mark,Laravel,Something text
3,Elon,Wordpress,Something text
4,Emily,PHP,Something text
5,Sam,HTML,Something text

打開文件的附加模式旨在將數據添加到文件的末尾。 您需要做的是提供對文件寫入的隨機訪問。 你需要使用 seek() 方法

你可以在這里看到和例子: http : //www.tutorialspoint.com/python/file_seek.htm

或者在這里閱讀 python 文檔: https : //docs.python.org/2.4/lib/bltin-file-objects.html這不是非常有用

如果您想添加到列的末尾,您可能需要打開文件讀取一行以確定它的長度,然后尋找到末尾。

暫無
暫無

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

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