python - 如何聚合 DataFrame 的值(并快速输出 numpy 数组)?

标签 python arrays pandas dataframe aggregate

给定 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/

相关文章:

python - 获取 API 的内容 HTML

python - 'utf 8' codec can' t 解码字节 0xbd CSV 文件 1/2 字符

python - 使循环依赖模型属性在 graphene-django 中可查询

Javascript 在 React 中解构数据

python - 不同列的比较顺序,并根据比较将字符串添加到新列

python - 将请求中的 JSON 数据转换为 Pandas DataFrame

javascript - 为什么我的嵌套 for 循环中的代码不会被执行?

Java:为什么在函数中更改数组的地址,当我们从该函数返回时不会更改其地址?

python - 使用 Dask 删除 Dataframe 中高度相关的成对特征?

python - 如何在 python pandas 中获取多级索引中的一个系列