Python Pivot для нескольких записей

У меня есть повторяющийся список пар «Имя сотрудника-квалификация-ценность», взятых из сводных данных Excel. Я загрузил данные во фрейм данных Staff, который выглядит так:

Name  Skill Attribute  Value 
 Bob S  Certification    ACA
 Bob S  Certification    GSA
 Bob S  Degree           Comp Sci
 Kate    Certification    BCA

Теперь я хочу вернуть данные в Python, чтобы они

Name  Certification  Degree
Bob S  ACA              Comp Sci
Bob S  GSA              Lit
Kate    BCA              None

Когда я пытаюсь развернуться в python с помощью:

Staff=Staff.drop_duplicates([‘Name’,’Skill Attribute’])
 Staff=Staff.pivot(‘Name’, ‘Skill Attribute’, ‘Value)

Я теряю ценность данных. Например, у Bob S две сертификации, но только одна показывает:

    Name  Certification  Degree
    Bob S  ACA              Comp Sci
    Kate    BCA              None

Попытка использовать функцию поворота без предшествующей строки drop_duplicates приводит к ошибке «ValueError: индекс содержит повторяющиеся записи, не может изменить форму»

Как я могу сделать так, чтобы все данные о значениях сохранялись, и чтобы для каждого сотрудника было разрешено несколько записей значений атрибутов навыков?

как я (или программа) узнаю, какую степень присвоить сертификату? Почему ACA Боба - это Comp Sci, а GSA - это Lit?

Piotrek 25.09.2018 15:29

Сертификатам не присваиваются степени. Дипломы и сертификаты - это независимые значения, которые являются атрибутами, описывающими сотрудника. Это данные сотрудников, которые я пытаюсь отобразить в развернутом формате. Например, у сотрудника есть SSN и дата рождения, которые сохраняются, но не связаны между собой. Это независимые атрибуты сотрудника.

user6825056 25.09.2018 15:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
2
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
df.set_index(
    ['Name', df.groupby(['Name', 'Skill Attribute']).cumcount(), 'Skill Attribute']
).Value.unstack().reset_index('Name').rename_axis(None, 1).reset_index(drop=True)

    Name Certification    Degree
0  Bob S           ACA  Comp Sci
1  Bob S           GSA      None
2   Kate           BCA      None

Другие вопросы по теме