Python 熊猫:在同一数据帧中合并两行

Python 熊猫:在同一数据帧中合并两行,python,pandas,Python,Pandas,我有一个数据框,包含2020赛季每场比赛的NBA统计数据。问题是,日期框在每场比赛中有2行。第1行是一个队的统计数据,第2行是对方队的统计数据。我想合并这两行。当我合并这些数据时,我想将列数增加一倍,并在所有列名称前添加一个“a”,以区分哪些是主队的数据,哪些是客队的数据 例如,一个看起来像这样的数据帧 Team_ID Abrv Game_ID Pts 123 LAL 111 101 124 NOP

我有一个数据框,包含2020赛季每场比赛的NBA统计数据。问题是,日期框在每场比赛中有2行。第1行是一个队的统计数据,第2行是对方队的统计数据。我想合并这两行。当我合并这些数据时,我想将列数增加一倍,并在所有列名称前添加一个“a”,以区分哪些是主队的数据,哪些是客队的数据

例如,一个看起来像这样的数据帧

Team_ID     Abrv      Game_ID      Pts
123         LAL         111         101
124         NOP         111         110
125         NYK         112         98
126         WAS         112         116
之后会是这样的:

Team_ID    Abrv       Game_ID      Pts   aTEAM_ID    aAbrv    aPTS
123        LAL        111          101   124         NOP      110
123        NYK        112          98    126         WAS      116
尝试:

微小变化

cumcount = df.groupby('Game_ID').cumcount()
renamer = {0: 'Home', 1: 'Away'}
df = df.set_index(['Game_ID', cumcount]).rename(renamer, level=1) \
  .unstack().swaplevel(0, 1, 1).sort_index(1)

        Away              Home             
        Abrv  Pts Team_ID Abrv  Pts Team_ID
Game_ID                                    
111      NOP  110     124  LAL  101     123
112      WAS  116     126  NYK   98     125

尝试使用
concat
然后展平多索引

out = df.assign(key=df.groupby('Game_ID').cumcount().astype(str)).set_index(['Game_ID','key']).unstack('key').sort_index(level=1,axis=1)

out.columns=out.columns.map('_'.join)
out
Out[444]: 
        Abrv_0  Pts_0  Team_ID_0 Abrv_1  Pts_1  Team_ID_1
Game_ID                                                  
111        LAL    101        123    NOP    110        124
112        NYK     98        125    WAS    116        126

这似乎没有改变我的数据帧。我的数据包含比Pts更多的数据点(例如REBS、助攻等),这可能是问题所在将其分配回数据帧
df=df.set\u index(['Game\u ID',cumcount]).rename(rename,level=1).unstack().swaplevel(0,1,1).sort\u index(1)
。非常感谢。这不能回答我的问题。我希望这一行只包含一个游戏ID@brwnsfan更新~
out = df.assign(key=df.groupby('Game_ID').cumcount().astype(str)).set_index(['Game_ID','key']).unstack('key').sort_index(level=1,axis=1)

out.columns=out.columns.map('_'.join)
out
Out[444]: 
        Abrv_0  Pts_0  Team_ID_0 Abrv_1  Pts_1  Team_ID_1
Game_ID                                                  
111        LAL    101        123    NOP    110        124
112        NYK     98        125    WAS    116        126