python - 创建数据透视表

2023-11-24

我正在尝试从 python 中的 Numpy 数组创建数据透视表。我做了很多研究,但找不到直接的解决方案。我知道你可以用 Pandas 来做到这一点,但我在安装它时遇到了麻烦 - 但一定有一种方法可以在没有 Pandas 的情况下做到这一点。我的 Numpy 数组是

[[ 4057     8  1374]
 [ 4057     9   759]
 [ 4057    11    96]
 ..., 
 [89205    16   146]
 [89205    17   154]
 [89205    18   244]]

我需要一个数据透视表,其中行是第一列,列是第二列,值是第三列。请帮助!

Thanks


我想这就是你想要的:

data = np.array([[ 4057,     8,  1374],
                 [ 4057,     9,   759],
                 [ 4057,    11,    96],
                 [89205,    16,   146],
                 [89205,    17,   154],
                 [89205,    18,   244]])

rows, row_pos = np.unique(data[:, 0], return_inverse=True)
cols, col_pos = np.unique(data[:, 1], return_inverse=True)

pivot_table = np.zeros((len(rows), len(cols)), dtype=data.dtype)
pivot_table[row_pos, col_pos] = data[:, 2]

>>> pivot_table
array([[1374,  759,   96,    0,    0,    0],
       [   0,    0,    0,  146,  154,  244]])
>>> rows
array([ 4057, 89205])
>>> cols
array([ 8,  9, 11, 16, 17, 18])

这种方法有一些限制,主要是,如果您对同一行/列组合有重复的条目,它们不会被添加在一起,而只会保留一个(可能是最后一个)。如果你想将它们全部加在一起,尽管有点复杂,你可以滥用 scipy 的稀疏模块:

data = np.array([[ 4057,     8,  1374],
                 [ 4057,     9,   759],
                 [ 4057,    11,    96],
                 [89205,    16,   146],
                 [89205,    17,   154],
                 [89205,    18,   244],
                 [ 4057,    11,     4]])

rows, row_pos = np.unique(data[:, 0], return_inverse=True)
cols, col_pos = np.unique(data[:, 1], return_inverse=True)

pivot_table = np.zeros((len(rows), len(cols)), dtype=data.dtype)
pivot_table[row_pos, col_pos] = data[:, 2]
>>> pivot_table # the element at [0, 2] should be 100!!!
array([[1374,  759,    4,    0,    0,    0],
       [   0,    0,    0,  146,  154,  244]])

import scipy.sparse as sps
pivot_table = sps.coo_matrix((data[:, 2], (row_pos, col_pos)),
                             shape=(len(rows), len(cols))).A
>>> pivot_table # now repeated elements are added together
array([[1374,  759,  100,    0,    0,    0],
       [   0,    0,    0,  146,  154,  244]])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python - 创建数据透视表 的相关文章

随机推荐

  • pdfBox - 签名有效性复选标记在 Acrobat reader 中不可见

    我正在使用此作为参考向 pdf 添加视觉签名 https stackoverflow com a 27940667 7103795 我能够正确打印详细信息 但在 Acrobat 中打开 pdf 时 它不会显示绿色勾号 尽管它写着 已签名且所
  • 如何在 Quill 编辑器中预填充 http 链接?

    使用 Quill 编辑器添加链接时 我必须包含协议 否则链接将被视为相对链接 当有人单击添加链接时 我希望该字段预先填充http 所以当用户输入google com它将创建一个链接到http google com代替http myapp n
  • Apache VirtualHost 403 禁止

    我最近尝试使用 Apache 设置测试服务器 该网站必须在域下运行www mytest com 我总是得到一个403 Forbidden错误 我使用的是 Ubuntu 10 10 服务器版本 文档根目录位于 dir 下 var www 以下
  • 如何使用msbuild创建nuget包而不重建项目?

    我想设置一个包含构建 测试和部署阶段的 CI CD 管道 我可以在构建阶段构建我的项目 msbuild src MyProject csproj t Restore msbuild src MyProject csproj p Config
  • 尝试导入错误:“firebase/app”不包含默认导出(导入为“firebase”)

    我尝试使用 React 进行 firebase 身份验证 但它显示错误 Attempted import error firebase app does not contain a default export imported as fi
  • gpus_ReturnGuiltyForHardwareRestart 崩溃

    应用程序在presentFrameBuffer中崩溃 在前台运行时 没有发生中断 它没有在第一帧中崩溃 它绘制了一段时间然后突然崩溃 我没有具体的重现步骤 但似乎与绘制特定的内容有关 但我仍然没有通过应用程序报告 openGL 错误 包括在
  • x86 BSWAP 指令 REX 不遵循 Intel 规范?

    我一直在使用 NASM 和 GAS 汇编 和反汇编 BSWAP x64 指令 并且都汇编指令BSWAP r15 as 490FCF以十六进制表示 反汇编器也将其反汇编为相同的指令 指令的 REX 前缀 49 因此设置了 REX W 位 位
  • 导出到 Excel 时,SSRS 不支持 CanGrow 属性

    我在 SSRS 报告中有一个表 表格单元之一包含订单中零件的描述 这些描述的长度可能会有所不同 因此我将 CanGrow 属性设置为 True 当我尝试将报告导出到 Excel 时 我希望如果文本长度超过单元格的宽度 那么单元格的高度将会增
  • $(window) 绑定 hashchange 如何检查部分哈希更改?

    我在学习Google Ajax Crawlable I use window bind hashchange控制ajax页面加载 我的网址如下 domain com keywords num 1 有两种改变 domain com apple
  • 在 OpenGLES 中让精灵正确面对相机

    我有一款或多或少是 2D 的游戏 但以 3D 渲染 摄像机悬停在 2D 游戏场上方 与完全垂直的角度倾斜约 20 度 从而为其提供一点 3D 视角 我有一些精灵需要渲染为完美的正方形 因为它们代表球形物体 我的第一种方法将四边形渲染在 2D
  • STL - 以下代码有什么问题?

    include stdafx h include
  • PDF 到 Github 风格的 Markdown

    我有一个 PDF 格式的项目描述 如果我能以某种方式设法在 github 网站上预览它 而不是单击 查看原始数据 并下载它 我会非常高兴 我以为可能有一个从 pdf 到 github 风格的 markdown 的转换器 但没有找到 再次声明
  • 字典应用程序的数据库设计

    目前我想开发移动设备的词典应用程序 词典本身使用离线文件 数据库来翻译单词 它只翻译两种语言 例如英语 西班牙语词典 我脑子里有一个简单的设计 这将是两个表 英语表和西班牙语表 每个表包含 word id id 它将作为其他表的外键 词 词
  • 重命名 cassandra 集群名称 1.2.6 时出错

    我在具有单个节点的集群中使用 cassandra 1 2 6 我正在尝试使用以下说明重命名集群 Cassandra 集群名称不匹配 完成所有步骤后 当我更改 cassandra yaml 文件后启动 cassandra 时 我继续出现相同的
  • matplotlib 再次显示图形

    使用 matplotlib 时 from matplotlib import pyplot as plt figure plt figure ax figure add subplot 111 ax plot x y figure show
  • 废弃的命名信号量未释放

    当 C 程序持有命名信号量时 当应用程序提前终止 例如按 Ctrl C 或关闭控制台窗口 时 它似乎不会被释放 至少在该进程的所有实例都终止之前不会 对于命名互斥体 在这种情况下会引发 AbandonedMutexException 但对于
  • 如何让 Subversion(或任何程序)执行定期提交?

    我想配置我的计算机 以便每半小时自动提交我正在处理的程序 我正在使用 svn 存储库 因此即使它只是一个每 30 分钟运行一次 svn ci 的脚本也没关系 问题是我不知道该怎么做 有人可以告诉我 或者指导我去做一些事情 让我让这个定期提交
  • 在新选项卡中打开链接[重复]

    这个问题在这里已经有答案了 我为我正在做的一个项目创建了一个网站 网站内容中有一些可以访问的外部网页的链接 同时 当用户单击其中一个链接时 他将被带到指定的链接 并且他将不再位于当前页面上 我想要做的是 当用户单击链接时 单击的链接中的指定
  • 如何确保 Rails API 免受 CSRF 的保护?

    我一直在使用 REST API 开发 Rails 应用程序 以便从移动应用程序进行访问 它运作得很好 当用户从移动应用程序登录时 他会得到auth token他在将来的 API 请求中使用它 问题是 API 也可以通过路径 api v1 从
  • python - 创建数据透视表

    我正在尝试从 python 中的 Numpy 数组创建数据透视表 我做了很多研究 但找不到直接的解决方案 我知道你可以用 Pandas 来做到这一点 但我在安装它时遇到了麻烦 但一定有一种方法可以在没有 Pandas 的情况下做到这一点 我