Создайте массив из фрейма данных на основе условий

У меня есть образец данных, например;

df=pd.DataFrame({'degree_awarded':['yes','no','yes','yes',
                                 'yes','yes' ,'yes','no'],
                  'avg_score':[78,87,94,55,68,76,78,8]
                })

степень_наградаavg_score
да78
нет87
да94
да55
и т. д.и т. д.

Я хотел бы разделить столбец «grade_awarded» на массивы «grade_awarded», «no_grade_awarded» с соответствующей оценкой, например

degree_awarded: [78, 94, 55, etc.]
no_degree_awarded: [87, etc.]

но я не уверен, как это сделать.

Любая помощь будет оценена по достоинству, спасибо за ваше время.

какой тип вывода? Словарь? Ряд?

mozway 09.04.2022 21:31

Да... планируете ли вы какие-либо дальнейшие операции с данными после того, как, похоже, вы можете просто после: df.groupby('degree_awarded')['avg_score'].agg(list).to_dict(‌​) пока

Jon Clements 09.04.2022 21:33

Извините, ребята, примерная таблица и выходные данные должны были включать и т. д. 68,76,78,8 должны были быть включены. Еще раз извините за дополнительную путаницу. Я отредактировал исходный вопрос, надеюсь, теперь он более понятен.

Rebecca James 09.04.2022 22:02
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
3
28
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
listScoreAwarded=list(df[df['degree_awarded']=='yes']['avg_score'])

listScoreNotAwarded=list(df[df['degree_awarded']=='no']['avg_score'])

Оба эти списка должны работать

Вы можете использовать assign нужные вам метки, а затем использовать groupby.agg(list).

Как серия:

(df
 .assign(group=df['degree_awarded'].map({'yes': 'degree_awarded',
                                         'no': 'no_degree_awarded'}))
 .groupby('group')['avg_score'].agg(list)
)

выход:

group
degree_awarded       [78, 94, 55, 68, 76, 78]
no_degree_awarded                     [87, 8]
Name: avg_score, dtype: object

Как словарь:

(df
 .assign(group=df['degree_awarded'].map({'yes': 'degree_awarded',
                                         'no': 'no_degree_awarded'}))
 .groupby('group')['avg_score'].agg(list)
 .to_dict()
)

вывод: {'degree_awarded': [78, 94, 55, 68, 76, 78], 'no_degree_awarded': [87, 8]}

Ааа ... только что заметил ... это будет отображаться в образце вывода, который предоставляет OP - похоже, что дубликаты отброшены ... Однако в их образце вывода также нет 8 ... что странно ...

Jon Clements 09.04.2022 21:41

@Jon Я заметил, что OP предоставил 2 образца, более длинный и короткий, но я пропустил дублированные 78 (хороший улов!). Я не знаю, что ожидается, но есть много обходных путей (агрегирование для установки, диктовка ключей, drop_duplicates перед и т. д.)

mozway 09.04.2022 21:45

И полностью микро-оптимизация, я бы, вероятно, не назначал столбец для группировки, просто использовал значение, а затем переименовывал доступ к индексу после его агрегирования перед переходом к dict... например: df.groupby('degree_awarded')['avg_score'].agg(list).rename(i‌​ndex={'yes': 'degree_awarded', 'no': 'no_degree_awarded'}).to_dict()

Jon Clements 09.04.2022 21:52

Извините, дубликаты не должны были быть удалены, что было небрежно с моей стороны. Большое спасибо за все ваши ответы.

Rebecca James 09.04.2022 22:01

Другие вопросы по теме