#python #pandas #csv #import
#python #pandas #csv #импорт
Вопрос:
Я пытаюсь скопировать некоторые столбцы из импортированного csv
файла в selected.csv
, но это выдает мне эту ошибку :
'ValueError: Usecols do not match columns, columns expected but not found: ['Status']';
Не имеет значения, какое имя столбца я использую, оно все равно не будет работать.
Я попытался напечатать заголовки, и они отображаются нормально, я даже пытался скопировать имена столбцов оттуда, так что, возможно, я пропустил пробел или что-то в этом роде, но это все равно выдает мне ту же ошибку. Я уже искал ответ, но ни один из тех, которые я нашел, не подходил мне.
import pandas as pd
import numpy as numpy
import csv as csv
path_to_import ='C:/Users/Amila/hello/Auftraege_ALSO_R00.csv'
import_file = pd.read_csv(path_to_import, sep=';',engine='python',encoding='utf-8-sig')
headers = pd.read_csv(path_to_import, index_col=0, nrows=0).columns.tolist()
columns = ['Status']
path_to_selected = 'C:/Users/Amila/hello/selected.csv'
pd.read_csv(path_to_import,usecols=columns).to_csv('selected.csv', index=False)
Это напечатанные имена столбцов:
['Auftragsdatum;"Auftrags-Nr.";"Ihre Referenz";"Auftragswert";"Auftragsstatus";"Lieferadresse";"Pos.";"Menge";"Art.Nr.";"Herst.Nr.";"Produktname";"Ihre Referenz (Position)";"Netto / Stk.";"Rechn.-Nr.";"Liefers.-Nr.";"Serien-Nr.";"Status";"Hersteller"']
Комментарии:
1. вам не удалось передать
sep
аргумент при чтении столбцов:headers = pd.read_csv(path_to_import, index_col=0, nrows=0, sep-';').columns.tolist()
и в вашей последней строке:pd.read_csv(path_to_import,usecols=columns, sep=';').to_csv('selected.csv', index=False)
2. @EdChum спасибо, это помогает. Я полностью упустил это из виду. Просто небольшой вопрос, я исправил sep = для заголовков, и при этом мое имя первого столбца исчезло. Как мне это исправить
3. Может быть, ваш первый столбец не является столбцом индекса, поэтому вам не нужен
index_col=0
?4. @EdChum спасибо за всю вашу помощь 🙂 теперь это отлично работает
5. Я исправил то, что мне было нужно. Если вы хотите, вы можете 🙂
Ответ №1:
У вас есть несоответствия в вашем коде:
pd.read_csv(path_to_import,usecols=columns).to_csv('selected.csv', index=False)
вы не передали тот же sep
аргумент, он должен быть
pd.read_csv(path_to_import,usecols=columns, sep=';').to_csv('selected.csv', index=False)
дополнительно в вашей строке заголовков:
headers = pd.read_csv(path_to_import, index_col=0, nrows=0).columns.tolist()
вы передали index_col=0
это обрабатывает первый столбец как столбец индекса, который не соответствует вашим другим строкам, поэтому удалите его:
headers = pd.read_csv(path_to_import, nrows=0).columns.tolist()