Я понимаю, что это может быть очень простой вопрос, однако я новичок в python, и я не уверен, как очень эффективно манипулировать кадрами данных pandas.
В качестве примера можно привести:
Job Skill RelationType
Director Manage staff essential
Director Manage staff optional
цель
В качестве примера можно привести:
Job Skill RelationType
Director Manage staff essential
Director Manage staff essential
В идеале я хочу написать функцию, которая, когда RelationType отличается, но навык одинаковый, он перезаписывается и заменяется в этом случае на существенное. Таким образом, для одной и той же работы существенное умение будет всегда более важным, чем необязательное.
df['RelationType'] = df.groupby(['Jobs', 'Skill'])['RelationType'].transform('min')
Категориальные данные полезны для этой задачи. Сначала конвертируйте RelationType
в категориальный ряд, сначала упорядоченный с более приоритетными значениями.
Затем выполните операцию GroupBy
по ключевым полям, используя функцию min
чтобы выбрать наиболее приоритетную категорию.
df['RelationType'] = pd.Categorical(df['RelationType'], ordered=True,
categories=['essential', 'optional'])
df['RelationType'] = df.groupby(['Job', 'Skill']).transform('min')
print(df)
Job Skill RelationType
0 Director ManageStaff essential
1 Director ManageStaff essential