Создайте новый столбец на основе группировки и условий других столбцов в 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 Нет
В приведенном ниже примере есть три сайта, на каждом из которых есть менеджер, а также возраст и пол сотрудников. Как создать новые столбцы для возраста менеджера и минимального возраста для каждого пола на каждом сайте?
импортировать панд как 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 Нет
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Создайте новый столбец на основе других столбцов для данных временных рядов в пандах.
Anonymous » » в форуме Python - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Создайте новый столбец на основе других столбцов для данных временных рядов в пандах.
Anonymous » » в форуме Python - 0 Ответы
- 42 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Значение Pandas в столбце на основе нескольких условий из других столбцов
Anonymous » » в форуме Python - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-