Подтвердить что ты не робот

Pandas Выберите столбцы DataFrame, используя логические

Я хочу использовать логическое значение, чтобы выбрать столбцы с более чем 4000 записей в comb который имеет более 1000 столбцов. Это выражение дает мне логический (True/False) результат:

criteria = comb.ix[:,'c_0327':].count()>4000

Я хочу использовать его, чтобы выбрать только столбцы True для нового Dataframe.
Следующее просто дает мне "Неустранимый ключ булевой серии":

comb.loc[criteria,]

Я также попробовал:

comb.ix[:, comb.ix[:,'c_0327':].count()>4000] 

Как и в этом вопросе, ответ булево выделение данных в кадре по столбцам, а не по строкам, но при этом возникает та же ошибка: "Предоставлен не изменяемый логический ключ серии"

comb.ix[:,'c_0327':].count()>4000

выходы:

c_0327    False
c_0328    False
c_0329    False
c_0330    False
c_0331    False
c_0332    False
c_0333    False
c_0334    False
c_0335    False
c_0336    False
c_0337     True
c_0338    False
.....
4b9b3361

Ответ 1

Возвращается серия с именами столбцов в качестве индекса и логических значений в виде значений строк.

Я думаю, на самом деле вы хотите:

теперь это должно работать:

comb[criteria.index[criteria]]

В основном это использует значения индекса из критериев и логические значения для их маскировки, это вернет массив имен столбцов, мы можем использовать это, чтобы выбрать интересующие столбцы из источника df.

Ответ 2

Вы также можете использовать:

# To filter columns (assuming criteria length is equal to the number of columns of comb)
comb.ix[:, criteria]
comb.iloc[:, criteria.values]

# To filter rows (assuming criteria length is equal to the number of rows of comb)
comb[criteria]

Ответ 4

В пандах 0,25:

comb.loc[:, criteria]

Возвращает фрейм данных со столбцами, выбранными логическим списком или рядом.

Для любого, кто пытается использовать несколько критериев,

comb.loc[:, criteria1 & criteria2]

Примечание: Использование and здесь вместо & НЕ работает. Это связано с тем, что and пытается определить логическое значение всего массива, в то время как & работает поэлементно. Это обсуждается в Логических операторах для логического индексирования в Pandas.