Python Groupby并在dataframe上展开
我有以下数据帧:Python Groupby并在dataframe上展开,python,pandas,Python,Pandas,我有以下数据帧: Name Num ID Red 1 ABC Red 1 DEF Red 1 GHI Blu 2 JKL Blu 2 MNO Blu 2 PQR Blu 2 ZYP 我正在尝试对Num执行groupby(),然后展开数据帧,使其看起来像这样: ToName ToNum ToID FromName FromNum
Name Num ID
Red 1 ABC
Red 1 DEF
Red 1 GHI
Blu 2 JKL
Blu 2 MNO
Blu 2 PQR
Blu 2 ZYP
我正在尝试对Num
执行groupby()
,然后展开数据帧,使其看起来像这样:
ToName ToNum ToID FromName FromNum FromID
Red 1 ABC Red 1 DEF
Red 1 ABC Red 1 GHI
Red 1 GHI Red 1 DEF
Blu 2 JKL Blu 2 MNO
Blu 2 JKL Blu 2 PQR
Blu 2 JKL Blu 2 ZYP
Blu 2 MNO Blu 2 PQR
Blu 2 MNO Blu 2 ZYP
Blu 2 PQR Blu 2 ZYP
实际上,它所做的只是groupby Name/Num,然后查找与组关联的每个ID组合。我迷路的困难部分是如何在
ID
的组合上展开数据帧,首先合并
,然后应用排序
,然后删除重复项
s=df.merge(df,on=['Name','Num']).query('ID_x!=ID_y')
s[['ID_x','ID_y']]=np.sort(s[['ID_x','ID_y']].values,1)
s=s.drop_duplicates()
Out[61]:
Name Num ID_x ID_y
1 Red 1 ABC DEF
2 Red 1 ABC GHI
5 Red 1 DEF GHI
10 Blu 2 JKL MNO
11 Blu 2 JKL PQR
12 Blu 2 JKL ZYP
15 Blu 2 MNO PQR
16 Blu 2 MNO ZYP
20 Blu 2 PQR ZYP