Hướng dẫn add new column csv python - thêm cột mới csv python

82

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một số tệp CSV trông như thế này:

Input
Name        Code
blackberry  1
wineberry   2
rasberry    1
blueberry   1
mulberry    2

Tôi muốn thêm một cột mới vào tất cả các tệp CSV để nó trông như thế này:

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry

Kịch bản tôi có cho đến nay là:

import csv
with open(input.csv,'r') as csvinput:
    with open(output.csv, 'w') as csvoutput:
        writer = csv.writer(csvoutput)
        for row in csv.reader(csvinput):
            writer.writerow(row+['Berry'])

(Python 3.2)

Nhưng ở đầu ra, tập lệnh bỏ qua mọi dòng và cột mới chỉ có berry trong đó:

Output
Name        Code    Berry
blackberry  1   Berry

wineberry   2   Berry

rasberry    1   Berry

blueberry   1   Berry

mulberry    2   Berry

Hướng dẫn add new column csv python - thêm cột mới csv python

Martineau

Huy hiệu vàng 116K2525 gold badges160 silver badges285 bronze badges

hỏi ngày 17 tháng 6 năm 2012 lúc 10:10Jun 17, 2012 at 10:10

4

Điều này sẽ cho bạn một ý tưởng về những việc cần làm:

>>> v = open('C:/test/test.csv')
>>> r = csv.reader(v)
>>> row0 = r.next()
>>> row0.append('berry')
>>> print row0
['Name', 'Code', 'berry']
>>> for item in r:
...     item.append(item[0])
...     print item
...     
['blackberry', '1', 'blackberry']
['wineberry', '2', 'wineberry']
['rasberry', '1', 'rasberry']
['blueberry', '1', 'blueberry']
['mulberry', '2', 'mulberry']
>>> 

Chỉnh sửa, lưu ý trong py3k bạn phải sử dụng

import csv
with open(input.csv,'r') as csvinput:
    with open(output.csv, 'w') as csvoutput:
        writer = csv.writer(csvoutput)
        for row in csv.reader(csvinput):
            writer.writerow(row+['Berry'])
4

Cảm ơn vì đã chấp nhận câu trả lời. Ở đây bạn có một phần thưởng (tập lệnh làm việc của bạn):

import csv

with open('C:/test/test.csv','r') as csvinput:
    with open('C:/test/output.csv', 'w') as csvoutput:
        writer = csv.writer(csvoutput, lineterminator='\n')
        reader = csv.reader(csvinput)

        all = []
        row = next(reader)
        row.append('Berry')
        all.append(row)

        for row in reader:
            row.append(row[0])
            all.append(row)

        writer.writerows(all)

Xin lưu ý

  1. tham số
    import csv
    with open(input.csv,'r') as csvinput:
        with open(output.csv, 'w') as csvoutput:
            writer = csv.writer(csvoutput)
            for row in csv.reader(csvinput):
                writer.writerow(row+['Berry'])
    
    5 trong
    import csv
    with open(input.csv,'r') as csvinput:
        with open(output.csv, 'w') as csvoutput:
            writer = csv.writer(csvoutput)
            for row in csv.reader(csvinput):
                writer.writerow(row+['Berry'])
    
    6. Theo mặc định, nó được đặt thành
    import csv
    with open(input.csv,'r') as csvinput:
        with open(output.csv, 'w') as csvoutput:
            writer = csv.writer(csvoutput)
            for row in csv.reader(csvinput):
                writer.writerow(row+['Berry'])
    
    7 và đây là lý do tại sao bạn có khoảng cách gấp đôi.
  2. Việc sử dụng một danh sách để nối tất cả các dòng và viết chúng vào một phát bằng
    import csv
    with open(input.csv,'r') as csvinput:
        with open(output.csv, 'w') as csvoutput:
            writer = csv.writer(csvoutput)
            for row in csv.reader(csvinput):
                writer.writerow(row+['Berry'])
    
    8. Nếu tệp của bạn rất, rất lớn thì đây có lẽ không phải là một ý tưởng tốt (RAM) nhưng đối với các tệp bình thường, tôi nghĩ nó nhanh hơn vì có ít I/O hơn.
  3. Như đã nêu trong các bình luận cho bài đăng này, lưu ý rằng thay vì làm tổ hai câu

    import csv
    with open(input.csv,'r') as csvinput:
        with open(output.csv, 'w') as csvoutput:
            writer = csv.writer(csvoutput)
            for row in csv.reader(csvinput):
                writer.writerow(row+['Berry'])
    
    9, bạn có thể làm điều đó trong cùng một dòng:

    với Open ('C: /test/test.csv', 'r') dưới dạng csvinput, open ('c: /test/output.csv', 'w') như csvoutput:

Đã trả lời ngày 17 tháng 6 năm 2012 lúc 10:32Jun 17, 2012 at 10:32

Joaquinjoaquinjoaquin

79,9K28 Huy hiệu vàng137 Huy hiệu bạc151 Huy hiệu đồng28 gold badges137 silver badges151 bronze badges

6

Tôi ngạc nhiên không ai đề nghị gấu trúc. Mặc dù sử dụng một tập hợp các phụ thuộc như gấu trúc có vẻ nặng tay hơn là cần thiết cho một nhiệm vụ dễ dàng như vậy, nó tạo ra một kịch bản rất ngắn và gấu trúc là một thư viện tuyệt vời để thực hiện tất cả các loại CSV (và thực sự tất cả các loại dữ liệu) . Không thể tranh luận với 4 dòng mã:

import pandas as pd
csv_input = pd.read_csv('input.csv')
csv_input['Berries'] = csv_input['Name']
csv_input.to_csv('output.csv', index=False)

Kiểm tra trang web của Pandas để biết thêm thông tin!

Nội dung của

Output
Name        Code    Berry
blackberry  1   Berry

wineberry   2   Berry

rasberry    1   Berry

blueberry   1   Berry

mulberry    2   Berry
0:

Name,Code,Berries
blackberry,1,blackberry
wineberry,2,wineberry
rasberry,1,rasberry
blueberry,1,blueberry
mulberry,2,mulberry

Đã trả lời ngày 27 tháng 12 năm 2015 lúc 23:26Dec 27, 2015 at 23:26

Hướng dẫn add new column csv python - thêm cột mới csv python

Blairg23Blairg23Blairg23

10,5K6 Huy hiệu vàng70 Huy hiệu bạc70 Huy hiệu đồng6 gold badges70 silver badges70 bronze badges

13

import csv
with open('input.csv','r') as csvinput:
    with open('output.csv', 'w') as csvoutput:
        writer = csv.writer(csvoutput)

        for row in csv.reader(csvinput):
            if row[0] == "Name":
                writer.writerow(row+["Berry"])
            else:
                writer.writerow(row+[row[0]])

Có lẽ một cái gì đó như thế là những gì bạn dự định?

Ngoài ra, CSV là viết tắt của các giá trị phân tách bằng dấu phẩy. Vì vậy, bạn cần phải phân tách các giá trị của bạn như thế này:

Name,Code
blackberry,1
wineberry,2
rasberry,1
blueberry,1
mulberry,2

Đã trả lời ngày 17 tháng 6 năm 2012 lúc 10:25Jun 17, 2012 at 10:25

JGRITTYJGRITTYjgritty

11.4K3 Huy hiệu vàng37 Huy hiệu bạc59 Huy hiệu đồng3 gold badges37 silver badges59 bronze badges

2

Tôi đã sử dụng gấu trúc và nó hoạt động tốt ... Trong khi tôi đang sử dụng nó, tôi phải mở một tệp và thêm một số cột ngẫu nhiên vào nó và sau đó chỉ lưu lại vào cùng một tệp.

Mã này thêm nhiều mục nhập cột, bạn có thể chỉnh sửa càng nhiều bạn cần.

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry
0

Nếu bạn muốn giá trị ô đó không được sao chép, vì vậy trước hết, hãy tạo một cột trống trong tệp CSV của bạn theo cách thủ công, giống như bạn đã đặt tên là giờ sau đó, bây giờ cho điều này, bạn có thể thêm dòng này vào mã trên,Hours then, Now for this you can add this line in above code,

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry
1

hoặc đơn giản là chúng ta có thể, mà không cần thêm cột thủ công, chúng ta có thể

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry
2

Tôi hy vọng nó sẽ giúp.

Đã trả lời ngày 12 tháng 9 năm 2017 lúc 5:53Sep 12, 2017 at 5:53

Hướng dẫn add new column csv python - thêm cột mới csv python

Enigmaenigmaenigma

8739 Huy hiệu bạc10 Huy hiệu Đồng9 silver badges10 bronze badges

Vâng, đó là một câu hỏi cũ nhưng nó có thể giúp một số

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry
3

Đã trả lời ngày 6 tháng 2 năm 2019 lúc 7:50Feb 6, 2019 at 7:50

Tpk43Tpk43Tpk43

3371 Huy hiệu vàng4 Huy hiệu bạc19 Huy hiệu đồng1 gold badge4 silver badges19 bronze badges

3

Tôi không thấy nơi bạn đang thêm cột mới, nhưng hãy thử điều này:

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry
4

Đã trả lời ngày 17 tháng 6 năm 2012 lúc 10:36Jun 17, 2012 at 10:36

Manicphasemanicphasemanicphase

6186 Huy hiệu bạc9 Huy hiệu Đồng6 silver badges9 bronze badges

0

Mã này sẽ đủ yêu cầu của bạn và tôi đã kiểm tra mã mẫu.

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry
5

Đã trả lời ngày 19 tháng 4 năm 2018 lúc 4:36Apr 19, 2018 at 4:36

AshwaqashwaqAshwaq

4016 Huy hiệu bạc16 Huy hiệu Đồng6 silver badges16 bronze badges

Trong trường hợp một tệp lớn, bạn có thể sử dụng

Output
Name        Code    Berry
blackberry  1   Berry

wineberry   2   Berry

rasberry    1   Berry

blueberry   1   Berry

mulberry    2   Berry
1 với đối số
Output
Name        Code    Berry
blackberry  1   Berry

wineberry   2   Berry

rasberry    1   Berry

blueberry   1   Berry

mulberry    2   Berry
2 cho phép đọc bộ dữ liệu trên mỗi đoạn:

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry
6

Nếu bạn muốn cập nhật tệp tại chỗ, bạn có thể sử dụng một tệp tạm thời và xóa nó ở cuối

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry
7

Đã trả lời ngày 2 tháng 9 năm 2020 lúc 18:49Sep 2, 2020 at 18:49

Để thêm một cột mới vào tệp CSV hiện có (có tiêu đề), nếu cột được thêm có đủ số giá trị nhỏ, thì đây là hàm thuận tiện (phần tương tự như giải pháp của @joaquin). Chức năng lấy

  1. Tên tệp CSV hiện có
  2. Tên tệp CSV đầu ra (sẽ có nội dung được cập nhật) và
  3. Liệt kê với tên tiêu đề & giá trị cột
Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry
8

Example:

Output
Name        Code    Berry
blackberry  1   blackberry
wineberry   2   wineberry
rasberry    1   rasberry
blueberry   1   blueberry
mulberry    2   mulberry
9

Tệp CSV hiện có:

Hướng dẫn add new column csv python - thêm cột mới csv python

Đầu ra (cập nhật) tệp CSV:

Hướng dẫn add new column csv python - thêm cột mới csv python

Đã trả lời ngày 5 tháng 11 năm 2020 lúc 20:59Nov 5, 2020 at 20:59

Hướng dẫn add new column csv python - thêm cột mới csv python

Phụ lục cột mới trong tệp CSV hiện có bằng Python không có tên tiêu đề

import csv
with open(input.csv,'r') as csvinput:
    with open(output.csv, 'w') as csvoutput:
        writer = csv.writer(csvoutput)
        for row in csv.reader(csvinput):
            writer.writerow(row+['Berry'])
0

Cảm ơn bạn

Đã trả lời ngày 24 tháng 7 năm 2020 lúc 11:31Jul 24, 2020 at 11:31

Hướng dẫn add new column csv python - thêm cột mới csv python

Bạn có thể viết:

import csv
with open(input.csv,'r') as csvinput:
    with open(output.csv, 'w') as csvoutput:
        writer = csv.writer(csvoutput)
        for row in csv.reader(csvinput):
            writer.writerow(row+['Berry'])
1

Sau đó, bạn đã hoàn thành. Để kiểm tra nó, bạn có thể chạy:

import csv
with open(input.csv,'r') as csvinput:
    with open(output.csv, 'w') as csvoutput:
        writer = csv.writer(csvoutput)
        for row in csv.reader(csvinput):
            writer.writerow(row+['Berry'])
2

Nếu bạn muốn thêm một cột với một số phần tử mới tùy ý (A, B, C), bạn có thể thay thế dòng thứ 4 của mã bằng cách:

import csv
with open(input.csv,'r') as csvinput:
    with open(output.csv, 'w') as csvoutput:
        writer = csv.writer(csvoutput)
        for row in csv.reader(csvinput):
            writer.writerow(row+['Berry'])
3

Đã trả lời ngày 3 tháng 5 lúc 15:51May 3 at 15:51

Hướng dẫn add new column csv python - thêm cột mới csv python

Làm cách nào để thêm một cột vào tệp CSV trong Python?

Hãy thêm một tên cột mới "Bộ phận" vào tệp CSV "AA" hiện có bằng phương thức chèn ...
Nhập Gandas dưới dạng PD ..
aa = pd.read_csv ("aa.csv").
aa.insert (2, cột = "bộ phận", value = "b.sc").
aa.head().

Làm cách nào để tạo một cột trong tệp CSV?

Làm cách nào để đặt văn bản vào các cột riêng biệt trong tệp CSV trong .....
Chọn cột đầu tiên (cột A).
Nhấp vào 'Dữ liệu' và sau đó trên 'Văn bản vào các cột'.
Tùy chọn 'phân định' đã được chọn trước. Đây là tùy chọn chính xác. Nhấp vào 'Tiếp theo' ..
Chọn tùy chọn 'Dấu phẩy' và nhấp vào 'Kết thúc' ..

Làm cách nào để nối một cột vào tệp CSV hiện có?

Mở tệp CSV của bạn trong chế độ phụ lục Tạo đối tượng tệp cho tệp này.Chuyển đối tượng tệp và danh sách các tên cột cho DictWriter () bạn sẽ nhận được một đối tượng của DictWriter.Truyền từ điển làm đối số cho hàm writerow () của dictWriter (nó sẽ thêm một hàng mới vào tệp CSV).

Làm cách nào để thêm một cột vào một bảng trong Python?

Các bước để thêm cột mới vào bảng bằng MySQL trong Python..
Nhập trình kết nối MySQL ..
Thiết lập kết nối với đầu nối bằng kết nối ().
Tạo đối tượng con trỏ bằng phương thức con trỏ () ..
Tạo một truy vấn bằng cách sử dụng các câu lệnh MySQL thích hợp ..
Thực thi truy vấn SQL bằng phương thức Execute () ..
Đóng kết nối ..