У меня есть фрейм данных формы (7985, 3048)
, отформатированный примерно так:
image_name col1_ID col2_ID col3_ID ... colN_ID # header
rdr_001_101 0.00342 0.00015 0.10094 ... 0.34210 # prob. distrib
rdr_001_133 0.00432 0.00025 0.01465 ... 0.22108 # prob. distrib
...
...
rdr_003_167 0.07543 0.00576 0.07523 ... 0.73421 # prob. distrib
Теперь для каждого изображения я хочу выбрать только 100 столбцов и соответствующие им индексы из этих 3047 значений. , 100 столбцов следует выбирать на основе значений в столбцах (т.е. выбирать столбцы с максимальными значениями, пока мы не достигнем значения 100).
Ограничение : порядок столбцов имеет значение (т. Е. Он должен оставаться в том же порядке на выходе, что и на входе). Пожалуйста, посмотрите пример ввода / вывода ниже для примера.
У меня есть решение на основе al oop (с использованием df.iterrows), но оно очень медленное и кажется, что это не рекомендуемый метод в целом. Кроме того, это простой пример, в то время как в моем фактическом фрейме данных может быть больше строк.
Каковы другие возможные (более быстрые) альтернативы?
Пример ввода, только с 5 столбцами:
image_name col1_ID col2_ID col3_ID col4_ID col5_ID
rdr_001_101 0.00342 0.00015 0.10094 0.34210 0.27651
rdr_001_133 0.43211 0.00025 0.01465 0.22108 0.00123
rdr_003_167 0.07543 0.25761 0.07523 0.01148 0.00341
Ожидаемый результат с 3 столбцами в качестве порога:
col3_ID col4_ID col5_ID
col1_ID col3_ID col4_ID
col1_ID col2_ID col3_ID