我有一个熊猫数据框,它已被分组为一个多索引,它基本上按游戏ID对统计数据进行分组,其中2级索引为团队的ID。我正在使用此数据进行机器学习,并且需要将统计信息放在同一行中,其中列名将由team1或team1联接,如team1.pts和team2.pts一样。可以用任何方便的方式吗?
非常感谢您的帮助,我附上了数据框的屏幕截图,以防万一我做了可怕的解释。
编辑:
为了更好地解释这一点,应该将每个连续的行与其上方的行连接起来,以将数据框扁平化为行数的一半,并将列数加倍。
答案 0 :(得分:0)
reset_index()
就是行号js = {"game.id":[15,15,16,16,17,17,18,18],"team.id":[16,30,14,25,4,22,3,30],"id":[2892,4836,5005,4771,5538,5707,7397,7228],"ast":[6,19,23,21,32,18,22,14],"blk":[1,15,6,10,4,7,6,1],"dreb":[14,33,38,40,43,32,43,24]}
df = pd.DataFrame(js).set_index(["game.id","team.id"])
dfx = df.reset_index().assign(gameset=lambda r: r.index//2)
dfx.groupby(["game.id","gameset"]).first().join(dfx.groupby(["game.id","gameset"]).last(), lsuffix=".1st", rsuffix=".2nd")
输出
team.id.1st id.1st ast.1st blk.1st dreb.1st team.id.2nd id.2nd ast.2nd blk.2nd dreb.2nd
game.id gameset
15 0 16 2892 6 1 14 30 4836 19 15 33
16 1 14 5005 23 6 38 25 4771 21 10 40
17 2 4 5538 32 4 43 22 5707 18 7 32
18 3 3 7397 22 6 43 30 7228 14 1 24