#python #pandas
#python #pandas
Вопрос:
У меня есть csv-файл, прочитанный pandas с информацией:
Id, Name, ManagerId
1. A. 3
2. B. 4
3. C
4. D
Это означает, что менеджером A является C (с идентификатором 3). Я хочу, чтобы панды это поняли. Как я могу это сделать? Я думаю, мне следует добавить новый столбец «Менеджер», показывающий имя менеджера, но я не знаю, как это сделать. Пожалуйста, помогите мне, большое спасибо.
Комментарии:
1. Вы можете использовать
map
. Если вы сделаете что-то вроде: df.ManagerID.map(df.set_index(‘Id’).Name)`2. классический способ сделать это — объединить таблицу с самой собой, где ManagerID == Id (будьте осторожны с дикими точками)
Ответ №1:
Стандартные нормы проектирования реляционных баз данных здесь могут помочь решить эту проблему. Вы можете создать реляционную базу данных с двумя фреймами данных из вашего одного фрейма данных.
-
Разделите данные менеджера на новый фрейм данных.
менеджеры = {‘ManagerID’:[3,4],’Name’:[‘C’,’D’]} managerdf = pd.DataFrame(данные = менеджеры)
-
Если вы хотите объединить два, присоединитесь к ManagerID
df.join(managerdf,rsuffix=’Mgmt’)
Ответ №2:
Используйте map
:
df['Manager'] = df['ManagerId'].map(df.set_index('Id')['Name'])