Создайте новый столбец на основе группировки и условий других столбцов в Python.Python

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Создайте новый столбец на основе группировки и условий других столбцов в Python.

Сообщение Гость »


В приведенном ниже примере есть три сайта, на каждом из которых есть менеджер, а также возраст и пол сотрудников. Как создать новые столбцы для возраста менеджера и минимального возраста для каждого пола на каждом сайте?

импортировать панд как pd импортировать numpy как np site = ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C'] менеджер = [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0] возраст = [24, 36, 22, 54, 28, 19, 33, 57, 26, 31, 25] пол = ['м', 'ж', 'м', 'м', 'м', 'ж', 'ж', 'м', 'м', 'ж', 'м'] df = pd.DataFrame({'сайт': сайт, 'менеджер': менеджер, «возраст»: возраст, 'пол': пол}) Я пробовал это:

df['manager_age'] = np.select([df['manager'] == 1], [df['age']]) df['minage_m'] = df.groupby(df['site'][df['gender'] == 'm'])['age'].transform(np.min) df['minage_f'] = df.groupby(df['site'][df['gender'] == 'f'])['age'].transform(np.min) Однако это не дает результата, который я ищу, поскольку он не заполняет каждую строку. Для менеджера_age первые 4 строки должны быть 36, для minage_m вторая строка должна быть 22 и т. д.
сайт менеджер возраст пол manager_age minage_m minage_f А 0 24 м 0 22.0 Нет А 1 36 е 36 Нет 36,0 А 0 22 м 0 22.0 Нет А 0 54 м 0 22.0 Нет Б 1 28 м 28 28,0 Нет Б 0 19 е 0 Нет 19,0 Б 0 33 е 0 Нет 19,0 C 1 57 м 57 25,0 Нет C 0 26 м 0 25,0 Нет C 0 31 е 0 Нет 31,0 C 0 25 м 0 25,0 Нет
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»