python - 如何以正确的顺序转置和聚合此数据框?

标签 python pandas

我正在尝试找到一种有效的方法来创建一个数据框,该数据框将所有不同的游戏值列为列,然后按游戏时间的 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.pivotDataFrame.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/

相关文章:

python - 我已经用 conda 安装了 pil,但是当我尝试导入它时,它说不存在模块

python - 按 0 级索引的最后一个值对 Pandas MultiIndex 进行排序

python - 网络抓取文章 - 个人合著者数据

python - 使用 conda/anaconda 我应该一直在(base)工作吗?

python - aiohttp - 多个 websockets,单个 session ?

python - 按数字和字母顺序对两个元素元组的列表进行排序

python - Pandas - 更新值序列

python - Pandas 数据框到 csv 引号

python - 如何从 DataFrame 中永久删除数据

python - 解决scipy中的多个独立优化