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

2024-04-29 17:21:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有一个以下格式的源数据帧 enter image description here

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

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)

enter image description here

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

我试过使用pivot表和其他stackover flow example,但没有多大帮助,有人能帮我理解和解决这个问题吗

提前感谢:)


Tags: 数据方法代码nameiddeveloperdataframedf
1条回答
网友
1楼 · 发布于 2024-04-29 17:21:47

您可以对^{}使用自定义函数,然后如果需要用列名称替换值,则添加^{},但首先通过^{}将不处理的列转换为MultiIndex

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                  

相关问题 更多 >