Python Pandas — не удается получить доступ к df с примененным фильтром

#python #pandas

#python #pandas

Вопрос:

Я работаю над файлом с некоторым df, но почему-то я не могу получить доступ к df с примененным фильтром (я хочу видеть данные только для определенной страны — Польши)

Я подумал, что, возможно, python не читает заголовок таким, какой он есть, но когда я набрал df.columns, он показал мне это имя столбца в списке

введите описание изображения здесь

и вот как я хотел вернуть его:

 def test():
    file = pd.read_csv(r'C:Usersmydeskoptest.csv', encoding = "ISO-8859-1")    
    test = file.loc[file.loc['Country Name'] == 'Poland']
    return test
  

print(test())

И это ошибка:

 KeyError: 'the label [Country Name] is not in the [index]'
  

Комментарии:

1. Так и должно быть file.loc[file['Country Name'] == 'Poland'] , вам не нужно несколько вложенных loc файлов.

2. Можете ли вы попробовать test = file[file['Country Name'] == 'Poland'] вместо test = file.loc[file.loc['Country Name'] == 'Poland']

3. спасибо, но то же самое: KeyError: ‘Название страны’

4. Можете ли вы отредактировать свой пост и скопировать / вставить вывод file.columns перед запуском какой-либо фильтрации? В именах столбцов могут быть дополнительные пробелы. Если это так, попробуйте: file = file.rename(columns=str.strip) сразу после того, как вы прочитаете его из своего csv.

5. мой плохой! я изменил имена столбцов для целей форума, и именно поэтому ваше решение не сработало — спасибо!

Ответ №1:

Если я правильно понимаю, это должно сработать: вместо :

 test = file.loc[file.loc['Country Name'] == 'Poland']
  

сделайте это:

 test = file.loc[file['Country Name'] == 'Poland']
  

С помощью функции ‘loc’ вы будете выбирать строки, а через имя столбца внутри вы указываете условие для выбора этих строк. Это должно выполнить работу, я считаю.

Комментарии:

1. спасибо, но я все еще получил KeyError: ‘Название страны’… например, я понятия не имею, почему то же самое работает в любом другом файле, но не в этом случае..

2. Хорошо, вам нужна эта кодировка ISO?

3. да, я думаю, что мне нужно, потому что ранее была какая-то ошибка с отображением данных, однако я удалил это, и я вижу ту же ошибку ключа

4. мой плохой! я изменил имена столбцов для целей форума, и именно поэтому ваше решение не сработало — спасибо!