我正在尝试找到一种有效的方法来创建一个数据框,该数据框将所有不同的游戏值列为列,然后按游戏时间的 user_id 相应地聚合行?这是我的示例 df:
user_id | game | game_hours | rank_order
1 | Fortnight | 1.5 | 1
1 | COD | 0.5 | 2
1 | Horizon | 1.7 | 3
1 | ... | ... | n
2 | Fifa2021 | 1.9 | 1
2 | A Way Out | 0.2 | 2
2 | ... | ... | n
...
第 1 步:如何将其转换为 df 格式(根据时间顺序正确匹配排名顺序)?
user_id | game_1 | game_2 | game_3 | game_n ...| game_hours
1 | Fortnight | COD | Horizon| | 3.7
2 | Fifa21 | A Way Out | | | 2.1
...
最佳答案
使用DataFrame.pivot
与 DataFrame.add_prefix
对于新专栏 DataFrame.assign
使用聚合 sum
:
df = (df.pivot('user_id','rank_order','game')
.add_prefix('game_')
.assign(game_hours=df.groupby('user_id')['game_hours'].sum())
.reset_index()
.rename_axis(None, axis=1))
print (df)
user_id game_1 game_2 game_3 game_hours
0 1 Fortnight COD Horizon 3.7
1 2 Fifa2021 A Way Out NaN 2.1
关于python - 如何以正确的顺序转置和聚合此数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72767332/