多个条目的Python Pivot

时间:2018-09-25 13:24:48

标签: python python-3.x pandas pivot

我有一个重复列表,这些列表是从透视的excel数据中获得的Employe名称-技能-值对。我将数据加载到数据框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)

我丢失了价值数据。例如,鲍勃·S(Bob S)拥有两项认证,但只有一项显示:

    Name  Certification  Degree
    Bob S  ACA              Comp Sci
    Kate    BCA              None

尝试在不使用前面的drop_duplicates行的情况下使用数据透视功能会导致“ ValueError:索引包含重复的条目,无法重塑”

如何进行数据透视,以便保留所有价值数据,并允许每个员工姓名输入多个技能属性值?

1 个答案:

答案 0 :(得分:0)

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