Python 如何将相同的类别列置于数据帧中的单个标题下?

Python 如何将相同的类别列置于数据帧中的单个标题下?,python,pandas,dataframe,pivot-table,data-analysis,Python,Pandas,Dataframe,Pivot Table,Data Analysis,我是新来的熊猫,面临着一个想法的困难,要解决这个问题,有人能帮我找到一个方法来解决这个问题 我有一个以下格式的源数据帧 这里我分享生成源数据帧的代码: df = pd.DataFrame({"Employee ID":[1, 2, 3, 4, 5], "Name":["A", "B", "C", "D", "E"], &quo

我是新来的熊猫,面临着一个想法的困难,要解决这个问题,有人能帮我找到一个方法来解决这个问题

我有一个以下格式的源数据帧

这里我分享生成源数据帧的代码:

df = pd.DataFrame({"Employee ID":[1, 2, 3, 4, 5], "Name":["A", "B", "C", "D", "E"],
               "Departments":["hr", "hr, manager", "manager", "developer", "tester, manager, developer"],
               "Groups":["group-1", "group-2, group-3", "", "", "group-1"]})
打印(df)

我想把它转换成下面的格式

我试过使用pivot table和其他工具,但没有多大帮助,有人能帮我理解和解决这个问题吗


提前感谢:)

您可以使用自定义函数,然后如果需要,通过列名称替换值添加,但首先通过以下方式将不处理的列转换为多索引:


可能使用简单的输入数据作为文本和执行的输出?图像不太好。嗨,@jezrael非常感谢你的清晰解释:)效果如预期!!
def f(x):
    m = x.str.get_dummies(', ').astype(bool)
    a = np.where(m, m.columns, '')
    return pd.DataFrame(a, columns=m.columns, index=x.index)

df1 = df.set_index(['Employee ID','Name'])

df = pd.concat([f(df1[x]) for x in df1.columns], axis=1, keys=df1.columns)
print (df)
                 Departments                        Groups                  
                   developer  hr  manager  tester  group-1  group-2  group-3
Employee ID Name                                                            
1           A                 hr                   group-1                  
2           B                 hr  manager                   group-2  group-3
3           C                     manager                                   
4           D      developer                                                
5           E      developer      manager  tester  group-1