簡體   English   中英

將特定的列從.csv文件復制到另一個.csv文件,並將其另存為新的.csv文件問題

[英]Copy specific Column from a .csv file to another .csv file and save it as a new .csv file issue

假設File1是我要從中復制該列的文件,File 2是我要將該列粘貼到的文件,並且一旦粘貼,請將該文件另存為擴展名為.csv的新文件。 看起來似乎很簡單,但是我對代碼的第一次嘗試卻給了我這個錯誤“ AttributeError:'file'對象沒有屬性'writerow'”。很明顯,我似乎不知道我在做什么錯。 所以我想知道你們是否可以幫助我。 這是我到目前為止編寫的代碼:

import csv

File1 = 'C:/Users/Alan Cedeno/Desktop/Test_Folder/dyn_0.csv'
File2 = 'C:/Users/Alan Cedeno/Desktop/Test_Folder/HiSAM1_data_160215_164858.csv'


with open(File1, "r") as r, open(File2, "a") as w: 
     reader = csv.reader(r, lineterminator = "\n")
     writer = csv.writer(w, lineterminator = "\n")

     for row in reader:
         w.writerow(row[0]) 

如果問題需要格式化,請告訴我。 另外,如果您認為代碼無法實現我想要的功能,那么提示我可以從哪里開始肯定會有所幫助。 請記住,我是一個學習緩慢的人,因此,如果您可以向我展示如何使其逐步運行,那將是巨大的幫助! 我只需要一些入門者,因此我可以繼續並自己編寫。 謝謝:o)

您最直接的問題是w是您想要writer的文件對象。 但是您還有其他一些問題。 首先,您描述了3個文件,而不是兩個。 接下來,您需要實際插入列。 最后,您必須決定如果兩個文件的長度不同,該怎么辦。 在此示例中,我假設您要從第一個csv文件中提取第一列,並將其作為合並結果中的第一列插入。 我對文件名進行了修改,以(希望)使其更加清晰。

如注釋中所述,以下代碼具有幾種用於合並csv的技術。 您需要根據實際情況進行更改。

import os
import csv

File1 = 'C:/Users/Alan Cedeno/Desktop/Test_Folder/dyn_0.csv'
File2 = 'C:/Users/Alan Cedeno/Desktop/Test_Folder/HiSAM1_data_160215_164858.csv'

root, ext = os.path.splitext(File2)
output = root + '-new.csv'

with open(File1) as r1, open(File2) as r2, open(output, 'w') as w:
    writer = csv.writer(w)
    merge_from = csv.reader(r1)
    merge_to = csv.reader(r2)
    # skip 3 lines of headers
    for _ in range(3):
        next(merge_from)
    for merge_from_row, merge_to_row in zip(merge_from, merge_to):
        # insert from col 0 as to col 0
        merge_to_row.insert(0, merge_from_row[0])
        # replace from col 1 with to col 3
        merge_to_row[1] = merge_from_row[3]
        # delete merge_to rows 5,6,7 completely
        del merge_to_row[5:8]
        writer.writerow(merge_to_row)

暫無
暫無

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

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