给定 pandas 中的以下 DataFrame:
user item rating
1 3 2
1 4 5
2 1 5
3 5 1
3 1 3
4 4 4
4 1 1
....
我想将其传输到 numpy 数组,其中用户列作为 y 轴,项目列作为 x 轴,如下所示:
1 2 3 4 5
1 nan nan 2 5 nan
2 5 nan nan nan nan
3 3 nan nan nan 1
4 1 nan nan 4 nan
如何使用apply
函数快速完成此操作?
最佳答案
您需要一个数据透视表:
>>> df.pivot_table(index='user', columns='item', values='rating')
1 3 4 5
user
1 NaN 2 5 NaN
2 5 NaN NaN NaN
3 3 NaN NaN 1
4 1 NaN 4 NaN
请注意,完全存在 NaN
列;如果需要,您可以重新索引以包含它们:
>>> df.pivot_table(index='user', columns='item', values='rating')
.reindex_axis([1, 2, 3, 4, 5], axis=1)
item 1 2 3 4 5
user
1 NaN NaN 2 5 NaN
2 5 NaN NaN NaN NaN
3 3 NaN NaN NaN 1
4 1 NaN NaN 4 NaN
要将这些值放入 NumPy 数组中,请访问 .values
属性:
_.values # _ is the last returned value in the repr
关于python - 如何聚合 DataFrame 的值(并快速输出 numpy 数组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35869175/