Hướng dẫn python csv replace header row - python csv thay thế hàng tiêu đề

0

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 muốn thay thế hàng tiêu đề của tệp CVS text.csv.

header_list = ['column_1', 'column_2', 'column_3']

Tiêu đề sẽ trông như thế này;

column_1, column_2, column_3

Đây là mã của tôi;

import csv
with open('text.csv', 'w') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(header_list)

Tiêu đề của tệp CSV đã được thay thế chính xác. Tuy nhiên, phần còn lại của các hàng trong tệp CSV đã bị xóa. Làm thế nào để tôi chỉ thay thế tiêu đề để lại các hàng khác còn nguyên?

Tôi đang sử dụng Python v3.6

Đã hỏi ngày 22 tháng 7 năm 2018 lúc 8:48Jul 22, 2018 at 8:48

Hướng dẫn python csv replace header row - python csv thay thế hàng tiêu đề

user3848207user3848207user3848207

2.82114 Huy hiệu vàng49 Huy hiệu bạc82 Huy hiệu đồng14 gold badges49 silver badges82 bronze badges

1

Đây là một cách thích hợp để thực hiện nó bằng mô -đun csv. csv.DictReader đọc nội dung của tệp CSV vào danh sách các dicts. Nó lấy một đối số fieldnames tùy chọn mà nếu SET áp dụng một tiêu đề tùy chỉnh và bỏ qua một tiêu đề ban đầu và coi nó là một hàng dữ liệu. Vì vậy, tất cả những gì bạn cần làm là đọc tệp CSV của bạn với csv.DictReader và ghi dữ liệu bằng

column_1, column_2, column_3
1. Bạn sẽ phải thả hàng đầu tiên trong
column_1, column_2, column_3
2 vì nó chứa tiêu đề cũ và viết tiêu đề mới. Nó có ý nghĩa để viết dữ liệu mới vào một tệp riêng biệt.
csv.DictReader reads the content of csv file into a list of dicts. It takes an optional fieldnames argument which if set applies a custom header and ignores an original header and treats it as a data row. So, all you need to do is read your csv file with csv.DictReader and write data with
column_1, column_2, column_3
1. You will have to drop the first row in the
column_1, column_2, column_3
2 because it contains the old header and write the new header. It does make sense to write the new data to a separate file though.

import csv

header = ["column_1", "column_2", "column_3"]

with open('text.csv', 'r') as fp:
    reader = csv.DictReader(fp, fieldnames=header)

    # use newline='' to avoid adding new CR at end of line
    with open('output.csv', 'w', newline='') as fh: 
        writer = csv.DictWriter(fh, fieldnames=reader.fieldnames)
        writer.writeheader()
        header_mapping = next(reader)
        writer.writerows(reader)

user3848207

2.82114 Huy hiệu vàng49 Huy hiệu bạc82 Huy hiệu đồng14 gold badges49 silver badges82 bronze badges

Đây là một cách thích hợp để thực hiện nó bằng mô -đun csv. csv.DictReader đọc nội dung của tệp CSV vào danh sách các dicts. Nó lấy một đối số fieldnames tùy chọn mà nếu SET áp dụng một tiêu đề tùy chỉnh và bỏ qua một tiêu đề ban đầu và coi nó là một hàng dữ liệu. Vì vậy, tất cả những gì bạn cần làm là đọc tệp CSV của bạn với csv.DictReader và ghi dữ liệu bằng

column_1, column_2, column_3
1. Bạn sẽ phải thả hàng đầu tiên trong
column_1, column_2, column_3
2 vì nó chứa tiêu đề cũ và viết tiêu đề mới. Nó có ý nghĩa để viết dữ liệu mới vào một tệp riêng biệt.Jul 22, 2018 at 9:58

5

Đã trả lời ngày 22 tháng 7 năm 2018 lúc 9:58

import csv
header_list = ['column_1', 'column_2', 'column_3']
mystring = ",".join(header_list)
def line_prepender(filename, line):
    with open(filename, 'r+') as csvfile:
        content = csvfile.read()
        csvfile.seek(0, 0)
        csvfile.write(line.rstrip('\r\n') + '\n' + content)

line_prepender("text.csv", mystring)

Dùng cái này:Jul 22, 2018 at 8:52

Hướng dẫn python csv replace header row - python csv thay thế hàng tiêu đề

Agile_EagleAgile_EagleAgile_Eagle

Đã trả lời ngày 22 tháng 7 năm 2018 lúc 8:523 gold badges12 silver badges28 bronze badges

6

Báo cáo vấn đề

Bạn đang làm việc trên một số dự án phân tích dữ liệu và bạn nhận được các tệp có tiêu đề không chính xác về chúng. Vấn đề là không mở tệp, làm thế nào bạn có thể thay đổi các tiêu đề trên các cột bên trong nó?

Để bắt đầu, hãy xem tệp chúng tôi muốn thay đổi, bên dưới là ảnh chụp màn hình dữ liệu với các tiêu đề của nó có bên trong:

Hướng dẫn python csv replace header row - python csv thay thế hàng tiêu đề

Vì vậy, như bạn có thể thấy chúng tôi có tên và địa chỉ. Nhưng cái gì nếu chúng ta muốn thay đổi địa chỉ1, địa chỉ2, địa chỉ3, địa chỉ4 thành một cái gì đó khác nhau?

Điều này có thể là vì một số lý do:

.

(B) Một số phần khác trong mã của bạn là sử dụng dữ liệu đó, nhưng yêu cầu các tên phải được sửa để không bị lỗi.

(C) Tổ chức của bạn có quy ước đặt tên yêu cầu tất cả các tên cột là một cấu trúc cụ thể.

(D) Tất cả dữ liệu thuộc loại tương tự phải có cùng định dạng, do đó nó có thể dễ dàng xác định được.

Điều gì sẽ là cách để thực hiện điều này trong Python, sau đó?

Dưới đây bạn sẽ thấy mã tôi đã sử dụng cho việc này, tìm cách giữ cho nó đơn giản:

import pandas as pd
#df = pd.read_csv("csv_import.csv",skiprows=1) #==> use to skip first row (header if required)
df = pd.read_csv("csv_import.csv") #===> Include the headers
correct_df = df.copy()
correct_df.rename(columns={'Name': 'Name', 'Address1': 'Address_1','Address2': 'Address_2','Address3': 'Address_3','Address4': 'Address_4'}, inplace=True)
print(correct_df)
#Exporting to CSV file
correct_df.to_csv(r'csv_export', index=False,header=True)

Có thể thấy có tổng cộng tám hàng. Các bước thực hiện như sau:

  1. Nhập tệp CSV.

2. Tạo một bản sao của DataFrame.

3. Trong DataFrame mới, hãy sử dụng chức năng Đổi tên để thay đổi bất kỳ tiêu đề cột nào bạn yêu cầu, Địa chỉ1, Địa chỉ2, Địa chỉ3, Địa chỉ4.

4. Khi các bản cập nhật được hoàn thành, hãy xuất lại tệp với các tiêu đề đã sửa vào thư mục bạn muốn.

Do kết quả của các bước trên, đầu ra sẽ xuất hiện như thế này:

Hướng dẫn python csv replace header row - python csv thay thế hàng tiêu đề

Và ở đó bạn đi. Nếu bạn có một quy trình tự động, bạn có thể kết hợp điều này để đảm bảo không có thất bại trong việc tải bất kỳ dữ liệu nào.

Một bài viết khác có thể khiến bạn quan tâm? Cách đếm không có hàng và cột trong tệp CSV