Вот решение с numpy
и numbers
не так уж много с pandas
и names
, может быть, оно поможет вам всегда:
employee = np.array(['a', 'c', 'b', 'd', 'e', 'f']) # Add 'f' as employee
manager = np.array(['b', 'b', 'e', 'e', 'f', 'f']) # with himself as manager
Получить номер устройства ( извините ) за каждого сотрудника:
manager_idx = np.array([np.where(employee == mng)[0] for mng in manager]).ravel()
L oop до конца иерархии
manager_idx_list = [manager_idx]
while True:
new_manger_idx = manager_idx_list[-1][manager_idx]
if all(new_manger_idx == manager_idx_list[-1]):
break
else:
manager_idx_list.append(new_manger_idx)
manager_list = np.array([employee[mng_idx] for mng_idx in manager_idx_list]).T
# 'a': [['b' 'e' 'f']
# 'c': ['b' 'e' 'f']
# 'b': ['e' 'f' 'f']
# 'd': ['e' 'f' 'f']
# 'e': ['f' 'f' 'f']
# 'f': ['f' 'f' 'f']]