Self Join in Pandas: объединение / объединение в одной таблице - PullRequest
0 голосов
/ 07 октября 2019

Я приложил данные здесь.

Данные Excel

Мне нужно вернуть DataFrame, содержащий список всех сотрудников (EmployeeID, имя, отчество,фамилия), а также имя и фамилия их руководителя. Столбцы в выходном DataFrame должны быть следующими: EmployeeID, FirstName, MiddleName, LastName, ManagerFirstName, ManagerLastName.

Подсказка: рассмотрите возможность присоединения таблицы самостоятельно, поскольку менеджеры являются самими сотрудниками.

Это кодДо сих пор у меня есть, что дает мне дубликаты записей:

# Creating data frame from Excel File. Enter the appropriate file path
df = pd.read_excel(Employees)

df_new = df[['EmployeeID', 'ManagerID', 'FirstName', 'MiddleName', 'LastName']].copy()
df_new['ManagerID'] = pd.to_numeric(df_new['ManagerID'], errors='coerce').fillna(0)
# convert object to int64
df_new['ManagerID'] = df_new['ManagerID'].astype(np.int64)

result = df_new.merge(df_new, left_on='EmployeeID', right_on='ManagerID')

print(result.head())

Любая помощь по этому вопросу будет принята с благодарностью.

1 Ответ

0 голосов
/ 07 октября 2019

Я думаю, что это будет работать

df = pd.DataFrame({"EmployeeID":[259,278,204,78,255],
                  "ManagerID":[278,204,78,255,259],
                  "FirstName":["ben","garret","gabe","reuben","gordon"],
                  "MiddleName":["T","R","B","H","L"],
                  "LastName":["miller","vargas","mares","dsa","hee"]})

df['ManagerID'] = pd.to_numeric(df['ManagerID'], errors='coerce').fillna(0)
df_ = df[["EmployeeID","FirstName","LastName"]]
df_ = df_.rename(columns={"EmployeeID":"ManagerID","FirstName":"ManagerFirstName","LastName":"ManagerLastName"})
out = pd.merge(df,df_,on=["ManagerID"],how="left")
out = out.drop(["ManagerID"],axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...