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