Мне интересно, есть ли более простой, эффективный по памяти способ выбора подмножества строк и столбцов из pandas DataFrame.
Например, с учетом этого фрейма данных:
df = DataFrame(np.random.rand(4,5), columns = list('abcde')) print df a b c d e 0 0.945686 0.000710 0.909158 0.892892 0.326670 1 0.919359 0.667057 0.462478 0.008204 0.473096 2 0.976163 0.621712 0.208423 0.980471 0.048334 3 0.459039 0.788318 0.309892 0.100539 0.753992
Мне нужны только те строки, в которых значение для столбца 'c' больше 0,5, но мне нужны только столбцы 'b' и 'e' для этих строк.
Это метод, который я придумал - возможно, есть лучший способ pandas?
locs = [df.columns.get_loc(_) for _ in ['a', 'd']] print df[df.c > 0.5][locs] a d 0 0.945686 0.892892
Моя конечная цель - преобразовать результат в массив numpy, чтобы перейти в алгоритм регрессии sklearn, поэтому я буду использовать код выше:
training_set = array(df[df.c > 0.5][locs])
... и это меня раздражает, так как я получаю огромную копию массива в памяти. Может быть, есть и лучший способ для этого?