如何将相同类别的列置于 pandas 数据框中的单个 header 下?

how to bring same category columns under a single header in a pandas dataframe?

我是 pandas 的新手,很难找到解决这个问题的想法,有人可以帮我解决这个问题。

我有以下格式的源数据框

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

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 和其他 但它没有多大帮助,有人可以帮助我理解和解决这个问题。

提前致谢:)

您可以将自定义函数与 Series.str.get_dummies, then if need replace values by columns names add numpy.where, but first convert columns for not processing to MultiIndex by DataFrame.set_index 一起使用:

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