Есть ли какой-либо способ показать имя в другой строке как новый столбец, соответствующий идентификатору в pandas?

#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:

Стандартные нормы проектирования реляционных баз данных здесь могут помочь решить эту проблему. Вы можете создать реляционную базу данных с двумя фреймами данных из вашего одного фрейма данных.

  1. Разделите данные менеджера на новый фрейм данных.

    менеджеры = {‘ManagerID’:[3,4],’Name’:[‘C’,’D’]} managerdf = pd.DataFrame(данные = менеджеры)

  2. Если вы хотите объединить два, присоединитесь к ManagerID

    df.join(managerdf,rsuffix=’Mgmt’)

Ответ №2:

Используйте map :

 df['Manager'] = df['ManagerId'].map(df.set_index('Id')['Name'])