Pandas- ошибка значения: пользовательские значения не соответствуют столбцам, столбцы ожидаются, но не найдены

#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()