Ошибка ключа при динамической фильтрации фрейма данных pandas

#python #pandas

#python #pandas

Вопрос:

Я получаю следующую ошибку в строке темы (пожалуйста, смотрите скриншот, прикрепленный для получения подробной информации) при попытке отфильтровать столбцы из фрейма данных:

Ни один из [Index([«a’,’c»], dtype=’object’)] не находится в [столбцах]

Вот мой код:

 seleted_columns_final = "'a','c'"

df_final = df[[str(seleted_columns_final)]]
print(df_final)
  

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

Тестовый фрейм данных выглядит следующим образом:

 row1 = {'a':5,'b':6,'c':7,'d':'A'}
row2 = {'a':8,'b':9,'c':10,'d':'B'}
row3 = {'a':11,'b':12,'c':13,'d':'C'}
df = pd.DataFrame([row1,row2,row3])[enter image description here][2]
  

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

1. seleted_columns_final = ['a', 'c'] df_final = df[seleted_columns_final]

2. Я спрашиваю, почему у вас есть 2 строки, 'a' и 'c' , завернутые в строку, "'a','c'" , которые вы затем вызываете str() снова? У @panktijk есть правильный способ для этой конструкции, но я думаю, что это может быть проблемой X <-> Y. Имена ваших столбцов должны представлять собой список фактических имен столбцов в виде строк, а не в виде отдельной строки.

3. Большое спасибо. Простите мое невежество, я только начал с Python

Ответ №1:

Вы объявили seleted_columns_final как строку («‘a’, ‘c'») и снова преобразовали ее в string? Я предполагаю, что вы хотите составить список выбранных столбцов в виде списка и создать фрейм данных, используя этот список.

Попробуй:

 seleted_columns_final= ['a','c']
df_final = df[seleted_columns_final]
print(df_final)
  

Вывод:

     a   c
0   5   7
1   8  10
2  11  13