将数据帧转换为numpy矩阵

时间:2016-12-01 19:01:04

标签: python python-3.x pandas numpy dataframe

我有

形式的数据框
user_id  item_id  rating
1          abc       5
1          abcd      3
2          abc       3
2          fgh       5

我想将其转换为numpy矩阵,例如

# abc  abcd  fgh
[[5,    3,    0]  # user_id 1
[3,    0,    5]] # user_id 2

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

您可以将pivotfillna一起使用,投放到int并最后按values转换为数组:

arr = df.pivot('user_id', 'item_id', 'rating').fillna(0).astype(int).values
print (arr)
[[5 3 0]
 [3 0 5]]

set_indexunstackvalues的另一种解决方案:

arr = df.set_index(['user_id','item_id']).unstack(fill_value=0).values
print (arr)
[[5 3 0]
 [3 0 5]]