Python Pivot для нескольких записей - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть повторяющийся список пар Имя сотрудника-Умение-Значение, полученных из сводных данных 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

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

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

1 Ответ

0 голосов
/ 25 сентября 2018
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
...