熊猫数据帧争用-Python

熊猫数据帧争用-Python,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧,如下所示: ID Emp1 Emp2 Emp3 1 John NaN Alex 2 John Steve Alex 3 John Steve Alex 4 Clint Jorge NaN 我想将上述数据帧转换为如下内容: John Emp1 [1,2,3] Clint Emp1 [4] Steve Emp2 [2,3] Jorge Emp2 [4] Alex Emp3 [1,2] 因此,基本上,对于每个列(Emp1、Emp2、Emp3),查找“唯

我有一个
数据帧
,如下所示:

ID Emp1  Emp2 Emp3

1  John NaN Alex

2  John Steve Alex

3  John Steve Alex

4  Clint Jorge NaN
我想将上述数据帧转换为如下内容:

John Emp1 [1,2,3]
Clint Emp1 [4] 
Steve Emp2 [2,3]
Jorge Emp2 [4]
Alex Emp3 [1,2]

   

因此,基本上,对于每个列(Emp1、Emp2、Emp3),查找“唯一”值(drop NaN),对于每个唯一值,获取“ID”和“column name”

您需要
将数据融化成长格式。然后,您需要执行groupby聚合以压缩“名称”和“Emp”数据:


您需要
融化
您的数据以获得长格式。然后,您需要执行groupby聚合以压缩“名称”和“Emp”数据:

new_df = (df
 .melt(id_vars="ID", var_name="emp", value_name="name")
 .dropna()
 .groupby(["name", "emp"], as_index=False)
 .agg(list)
 .sort_values(["emp", "name"], ascending=[True, False])
)

print(new_df)
    name   emp         ID
1  Clint  Emp1        [4]
2   John  Emp1  [1, 2, 3]
3  Jorge  Emp2        [4]
4  Steve  Emp2     [2, 3]
0   Alex  Emp3  [1, 2, 3]