Создание массива numpy путем выбора столбцов фрейма данных pandas на основе условия в другом фрейме данных

#python #pandas #numpy #iterator

#python #pandas #numpy #итератор

Вопрос:

Я новичок в Pandas, и я часами пытаюсь решить свою проблему, но мне не удалось ее решить. Я видел несколько диалогов stackoverflow, но ни один из них не похож на мою проблему.

У меня есть два фрейма данных, обучающий с формой (256, 800) и метками (1, 800), каждая метка соответствует одной цифре 0-9, и я хочу создать 10 массивов numpy, где каждый содержит только обучающие данные i разряда.

Если первый обучающий пример (1*256) имеет метку 0, чтобы присвоить столбец (1*256) обучения первому массиву numpy и так далее. т.е. повторяя один фрейм данных, присваивайте массив numpy на основе условия другому фрейму данных. Если, например, у меня 89 «нулей», то массив numpy «нулей» будет равен 256 * 89..

Заранее спасибо

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

1. можете ли вы быть более конкретными, приведя несколько примеров

2. Предположим, у вас есть обучающий набор данных (df), состоящий из 256 строк и 800 столбцов, то есть 800 экземпляров (изображений) по 256 пикселей, и у вас также есть другой набор данных, называемый labels 1 * 800 каждый, каждое изображение набора обучающих данных имеет метку в соответствующей позиции набора данных меток. Метки равны 0-9, и вы хотите извлечь из каждой все нули и создать новый массив numpy, все единицы в новый массив numpy и так далее

Ответ №1:

Это должно сработать: dict — это словарь, а ключи ссылаются на метки. Я предполагаю, что labels — это фрейм данных с одной строкой и несколькими столбцами, вот почему я его транспонировал.

 dict = {0:[], 1:[], 2:[], 3:[], 4:[], 5:[], 6:[], 7:[], 8:[], 9:[]}
for i in range(df.shape[0]):
    dict[labels.T.[i]].append(df.iloc[i, :])