Pandas - вычислить показатель успешности столбца на основе другой метки столбца

У меня есть один фрейм данных df:

    route   value
1     1       1
2     2       2
3     2       2
4     2       1
5     1       2

Значение столбца дает успех (2) или неудачу (1). Я хочу создать третий столбец, в котором указан уровень успеха для каждого маршрута.

Желаемый результат:

    route   value   Rate
1     1       1      0.5
2     2       2      0.66
3     2       2      0.66
4     2       1      0.66
5     1       2      0.5

спасибо за помощь

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Давай попробуем transform с groupby

df['Rate'] = df['value'].eq(2).groupby(df['route']).transform('mean')
df
Out[611]: 
   route  value      Rate
1      1      1  0.500000
2      2      2  0.666667
3      2      2  0.666667
4      2      1  0.666667
5      1      2  0.500000

Спасибо ! Я заметил, что если я хочу сгруппировать по 2 маршрутам (например, маршрут 1 и маршрут 2), df['Rate'] = df['value'].eq(2).groupby(df[['route1','route2']]).transform‌​('mean') не работает: Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensional, почему это так?

Jean le Chevalier 16.05.2022 16:59

хорошо, я получил ответ здесь, мой плохой: stackoverflow.com/questions/27517425/…

Jean le Chevalier 16.05.2022 17:02

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

Мультииндексированные данные во вложенный список объектов
Сравните два столбца из двух фреймов данных и удалите строки в одном, если значения равны
Сохранение данных в другой переменной во время цикла FOR
Проверьте, содержит ли столбец строк из одного фрейма данных подстроку из столбца в другом фрейме данных, и выведите его сопоставленные данные
Pandas: создать новый столбец на основе текстового значения другого столбца
Как я могу экспортировать одно значение из ataframe pandas, используя функцию where?
Прокручивающееся окно Pandas с условием фильтрации для удаления некоторых последних данных
Как сгруппировать по временному интервалу снизу вверх, используя функцию повторной выборки Pandas?
Отображение/возврат последних 12 и 24 месяцев с указанием года текущего месяца и года с использованием python (диапазон дат создания)
Объединить две строки pandas dataframe