«Ошибка значения: логический массив, ожидаемый для условия, а не float64» при нарезке фрейма данных по условию

#python #pandas #dataframe #slice

#python #pandas #фрейм данных #срез

Вопрос:

У меня есть фрейм данных со многими столбцами, и я хочу создать таблицу с одним согласованным столбцом и двумя другими столбцами, которые меняются в каждом цикле.

Проблема в том, что первый шаг нарезки завершается неудачно, и мне не удается создать этот новый фрейм данных с 3 столбцами.

 #list of pairs of the columns i'm interested in for each loop
cols_of_interest=[['col1', 'col2'],['col3','col4']]


for i in cols_of_interest:
    table=df[df[['col_not_from_list',i[0],i[1]]]]
    table = table.dropna(how='any',axis=0)
...
 

—-> 7 таблица= df[df[[‘col_not_from_list’,i[0],i[1]]]]

Ошибка значения: логический массив, ожидаемый для условия, а не float64

В более старых сообщениях, связанных с этой же ошибкой, упоминается, что версия pandas может быть проблемой, но я не думаю, что это так (поскольку эти сообщения опубликованы несколько лет назад). Кроме того, я нашел совет по использованию маски вместо этого, но я не понимаю, почему нарезка таким образом не сработает.

Моя конечная цель: создать фрейм данных внутри цикла с тремя столбцами: согласованный два других из списка.

Ответ №1:

Изменить на

 cols_of_interest=[['col1', 'col2'],['col3','col4']]


for i in cols_of_interest:
    table = df[['col_not_from_list'] i]
    table = table.dropna(how='any',axis=0)