如何在 pandas & R 中转置数据帧而不进行任何聚合?

How to transpose dataframe without any aggregation in pandas & R?

我有以下数据框。

user_id item_id rank
user1   item4   1
user1   item2   2
user1   item5   3
user1   item1   4
user1   item3   5
user2   item5   1
user2   item3   2
user2   item4   3
user2   item1   4
user2   item2   5

如何在 R 和 pandas 中重塑为以下格式?

user_id rank1   rank2   rank3   rank4   rank5
user1   item4   item2   item5   item1   item3
user2   item5   item3   item4   item1   item2

我发现转置特别是在 R 中很棘手。任何优雅的标准 function/way 一直有效?

我们可以在R中使用library(reshape2)中的dcast将'long'格式转换为'wide'格式

library(reshape2) 
dcast(df1, user_id~paste0('rank', rank), value.var='item_id')
#   user_id rank1 rank2 rank3 rank4 rank5
#1   user1 item4 item2 item5 item1 item3
#2   user2 item5 item3 item4 item1 item2

尝试在 pandas 中使用数据透视表。例如(在 'data.txt' 中保存数据后)

import pandas as pd

df = pd.read_table('data.txt', delim_whitespace=True)

df.pivot(index='user_id', columns='rank', values='item_id')