Файлы CSV (значения, разделенные запятыми) широко используются для хранения данных и обмена ими. Класс DictReaderв модуле Python csvпредоставляет удобный способ чтения файлов CSV как словарей. В этой статье мы рассмотрим различные способы добавления столбца в CSV-файл с помощью DictReader, а также приведем примеры кода.
Метод 1: запись в новый файл CSV
Самый простой способ добавить столбец в файл CSV — создать новый файл и записать измененные данные. Вот пример:
import csv
input_file = 'input.csv'
output_file = 'output.csv'
new_column_header = 'New Column'
new_column_data = ['Value 1', 'Value 2', 'Value 3']
with open(input_file, 'r') as csv_in, open(output_file, 'w', newline='') as csv_out:
    reader = csv.DictReader(csv_in)
    fieldnames = reader.fieldnames + [new_column_header]
    writer = csv.DictWriter(csv_out, fieldnames=fieldnames)
    writer.writeheader()
    for row in reader:
        row[new_column_header] = new_column_data[reader.line_num - 2]
        writer.writerow(row)Этот метод считывает входной файл CSV с помощью DictReader, добавляет заголовок нового столбца к существующим именам полей и записывает измененные строки в новый файл CSV.
Метод 2: изменение существующего файла CSV
Если вы хотите изменить существующий файл CSV на месте, вы можете использовать для этого модуль fileinput. Вот пример:
import csv
import fileinput
input_file = 'input.csv'
new_column_header = 'New Column'
new_column_data = ['Value 1', 'Value 2', 'Value 3']
for line in fileinput.input(input_file, inplace=True, backup='.bak'):
    row = dict(csv.reader([line]).__next__())
    if fileinput.isfirstline():
        print(','.join(list(row.keys()) + [new_column_header]))
    else:
        row[new_column_header] = new_column_data[fileinput.lineno() - 2]
        print(','.join(list(row.values())))Этот метод использует модуль fileinputдля чтения входного файла CSV построчно. Он преобразует каждую строку в словарь с помощью модуля csv.reader, добавляет в словарь новый столбец и печатает измененную строку в тот же файл.
Метод 3: использование библиотеки Pandas
Если вы предпочитаете работать с библиотекой Pandas, вы можете использовать ее мощные возможности манипулирования данными, чтобы добавить столбец в файл CSV. Вот пример:
import pandas as pd
input_file = 'input.csv'
output_file = 'output.csv'
new_column_header = 'New Column'
new_column_data = ['Value 1', 'Value 2', 'Value 3']
df = pd.read_csv(input_file)
df[new_column_header] = new_column_data
df.to_csv(output_file, index=False)Этот метод использует функцию read_csvиз библиотеки Pandas для чтения входного файла CSV в DataFrame. Затем он добавляет новый столбец в DataFrame и записывает измененный DataFrame обратно в новый файл CSV.
В этой статье мы рассмотрели различные способы добавления столбца в CSV-файл с помощью DictReaderв Python. Мы рассмотрели такие подходы, как запись в новый файл CSV, изменение существующего файла CSV и использование библиотеки Pandas. В зависимости от ваших конкретных требований и предпочтений вы можете выбрать метод, который лучше всего соответствует вашим потребностям.
Не забудьте импортировать необходимые библиотеки (csv, fileinputили pandas) перед использованием этих методов. Используя эти методы, вы можете эффективно манипулировать файлами CSV и улучшить рабочие процессы обработки данных.