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