簡體   English   中英

將特定列從csv文件復制到特定位置的另一個csv

[英]Copying a specific column from a csv file to another csv in a specific place

我在該論壇上看到的Python 2.7中嘗試了不同的方法,用於將特定列從csv文件復制到特定位置(列)的另一個csv文件。

csv1:
Header1 Header2 Header3 Header4
1       2       3       4
1       2       3       4
1       2       3       4
1       2       3       4

csv2:
Header5 Header6 Header7
5       6       7
5       6       7
5       6       7

所以我想將列Header2復制到列Header6上,結果如下

csv2:
Header5 Header2 Header7
5       2       7
5       2       7
5       2       7
        2

每個標頭位於不同的單元格中。 我嘗試了以下操作(甚至制作了第三個文件),但沒有成功:

with open('book1.csv', 'r') as book1:
    with open('book2.csv', 'r') as book2:
        reader1 = csv.reader(book1, delimiter=',')
        reader2 = csv.reader(book2, delimiter=',')

        both = []
        fields = reader1.next() # read header row
        reader2.next() # read and ignore header row
        for row1, row2 in zip(reader1, reader2):
            row2.append(row1[-1])
            both.append(row2)

        with open('output.csv', 'w') as output:
            writer = csv.writer(output, delimiter=',')
            writer.writerow(fields) # write a header row
            writer.writerows(both)

有任何想法嗎? :)

您要追加的列表會水平追加。 該行無法知道要添加到該行的下一個項目是否屬於相鄰列或上方的多個列。

解決此問題的方法是識別具有最多值的標題列的長度(所有列中的最大列長度)。

在所需的“ csv2”輸出中,Header2在其列中具有最高數量的值(4個值),而其他Headers(3個值)則最多。

您要做的是確保所有其他標頭的長度等於最大長度(4個值)。

您可以連續地向每列添加不相關的項,以便為下一列完美地隔開。 您可以垂直添加到底部短欄的示例項目可以是空字符串值(“”),不適用的字符串值(“ NA”)或不希望顯示的類似0的數字作為任何數據集列中的整數。

嘗試類似的東西:

        for row1, row2 in zip(reader1, reader2):
            newRow = str(row1[0])+","+str(row1[1])+","+str(row1[2])
            both.append(row2)

我也建議您不要復制其他代碼並將其粘貼為解決方案。 我建議您嘗試至少執行一部分代碼並尋求幫助。 如果您也不要添加任何代碼,則很好,但是,如果您不嘗試輸入的代碼,可能會使人們感到困惑,並且他們無法為您提供幫助。

暫無
暫無

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

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