熊猫“DataFrameGroupBy”和“SeriesGroupBy”

2024-02-26

我承认我不是 Python 专家,但我仍然发现与 Pandas 打交道DataFrameGroupBy and SeriesGroupBy物体异常违反直觉。 (我有 R 背景。)

我有下面的数据框:

import pandas as pd
import numpy as np
df = pd.DataFrame({'id' : range(1,9),
                   'code' : ['one', 'one', 'two', 'three',
                             'two', 'three', 'one', 'two'],
                   'colour': ['black', 'white','white','white',
                           'black', 'black', 'white', 'white'],
                   'irrelevant1': ['foo', 'foo', 'foo','bar','bar',
                                     'foo','bar','bar'],
                   'irrelevant2': ['foo', 'foo', 'foo','bar','bar',
                                     'foo','bar','bar'],
                   'irrelevant3': ['foo', 'foo', 'foo','bar','bar',
                                     'foo','bar','bar'],
                   'amount' : np.random.randn(8)},  columns= ['id','code','colour', 'irrelevant1', 'irrelevant2', 'irrelevant3', 'amount'])

我希望能够得到id分组依据code and colour。下面的代码进行分组,但保留所有列。

gb = df.groupby(['code','colour'])
gb.head(5)
                id   code colour irrelevant1 irrelevant2 irrelevant3    amount
code  colour                                                                  
one   black  0   1    one  black         foo         foo         foo -0.644170
      white  1   2    one  white         foo         foo         foo  0.912372
             6   7    one  white         bar         bar         bar  0.530575
three black  5   6  three  black         foo         foo         foo -0.123806
      white  3   4  three  white         bar         bar         bar -0.387080
two   black  4   5    two  black         bar         bar         bar -0.578107
      white  2   3    two  white         foo         foo         foo  0.768637
             7   8    two  white         bar         bar         bar -0.282577

问题:

1) In gb,我如何只存储id列(甚至没有任何索引)并删除其余部分?

2)一旦我有了想要的DataFrameGroupBy gb,我如何访问id{code = 1 and color=white} 的情况有多少?我试过gb.get_group('one','white') and gb.get_group(['one','white'])但它们不起作用。

3)如何访问 {color=white} 的条目,即缺少code index ?

4)最后,manual http://pandas.pydata.org/pandas-docs/dev/groupby.html不是很有帮助,您是否知道有任何来源提供了如何创建和访问这些分组对象的示例?


对于您的问题,您甚至不需要执行groupby(但你应该在散文文档 http://pandas.pydata.org/pandas-docs/dev/groupby.html.

更好的解决方案是MultiIndex:

In [36]: df = df.set_index(['code', 'colour']).sort_index()

In [37]: df
Out[37]: 
              id irrelevant1 irrelevant2 irrelevant3    amount
code  colour                                                  
one   black    1         foo         foo         foo  0.103045
      white    2         foo         foo         foo  0.751824
      white    7         bar         bar         bar -1.275114
three black    6         foo         foo         foo  0.311305
      white    4         bar         bar         bar -0.416722
two   black    5         bar         bar         bar  1.534859
      white    3         foo         foo         foo -1.068399
      white    8         bar         bar         bar -0.243893

[8 rows x 5 columns]

这照顾1.

2:使用熟悉的切片语法:

In [38]: df.loc['one', 'white']
Out[38]: 
             id irrelevant1 irrelevant2 irrelevant3    amount
code colour                                                  
one  white    2         foo         foo         foo  0.751824
     white    7         bar         bar         bar -1.275114

[2 rows x 5 columns]

3:这是一个横截面,使用.xs:

In [39]: df.xs('white', level='colour')
Out[39]: 
       id irrelevant1 irrelevant2 irrelevant3    amount
code                                                   
one     2         foo         foo         foo  0.751824
one     7         bar         bar         bar -1.275114
three   4         bar         bar         bar -0.416722
two     3         foo         foo         foo -1.068399
two     8         bar         bar         bar -0.243893

[5 rows x 5 columns]

4: 例子到处都是。在这里检查 pandas / groupby 标签,this http://pandas.pydata.org/pandas-docs/dev/tutorials.html文档的部分正在现在正在工作 https://github.com/pydata/pandas/pull/5929,上面链接的散文文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

熊猫“DataFrameGroupBy”和“SeriesGroupBy” 的相关文章

  • 如何将 UPX 与 pyinstaller 一起使用?

    如何将 UPX 与 pyinstaller 一起使用 我正在关注文档 我已经下载了UPX 我的文件如下所示 import csv import selenium import pandas print Hello 然后我运行 pyinsta
  • TCP打孔问题

    我尝试使用 Python 3 中概述的原则为防火墙编写一个基本的 TCP 打孔器本文 http www bford info pub net p2pnat index html 不过 我无法连接任何东西 这是代码 usr bin pytho
  • python中嵌套字典值的总和

    我有一本这样的字典 data 11L a 2 b 1 a 2 b 3 22L a 3 b 2 a 2 b 5 a 4 b 2 a 1 b 5 a 1 b 0 33L a 1 b 2 a 3 b 5 a 5 b 2 a 1 b 3 a 1 b
  • Tensorflow 训练期间 GPU 使用率非常低

    我正在尝试为 10 类图像分类任务训练一个简单的多层感知器 这是 Udacity 深度学习课程作业的一部分 更准确地说 任务是对各种字体呈现的字母进行分类 数据集称为 notMNIST 我最终得到的代码看起来相当简单 但无论如何我在训练期间
  • 如何将嵌套的Python字典转换为简单的命名空间?

    假设我有一个深度为 N 的嵌套字典 如何将每个内部嵌套字典转换为简单的命名空间 example input key0a test key0b key1a key2a keyNx key2b test key1b test example o
  • 使用 NumPy 的 Mittag-Leffler 函数的不稳定性

    在尝试重现时Wolfram MathWorld 上的情节 http mathworld wolfram com Mittag LefflerFunction html 并试图帮助这个问题 https stackoverflow com qu
  • Django“模型”对象不可迭代

    我有一张表 其中显示了已注册的员工 我想根据他们的数据库生成一个简单的 HTML 页面 其中包括他们的姓名 id 职称等 为此 我将一个 id 传递给视图 以便它可以获取相应用户的详细信息并向我显示 一切正常 直到出现错误对象不可迭代 下面
  • 手动安装开放多语言世界网 (NLTK)

    我正在使用一台只能访问专用网络并且无法从命令行发送指令的计算机 因此 每当我必须安装 Python 包时 我都必须手动安装 我什至不能使用 Pypi 幸运的是 NLTK 允许我手动下载语料库 从here https www nltk org
  • 完全定制的Python帮助用法

    我正在尝试使用 Python 创建完全自定义的 帮助 用法 我计划将其导入到许多我想要具有风格一致性的程序中 但遇到了一些麻烦 我不知道为什么我的描述忽略换行符 尝试过 和 我无法让 出现在 ARGS 行的 换行符之后 显然它们坐在自己的行
  • 使用 argparse 指定默认文件名,但不使用 --help 打开它们?

    假设我有一个对文件执行一些操作的脚本 它在命令行上获取此文件的名称 但如果未提供 则默认为已知文件名 content txt 说 与蟒蛇的argparse 我使用以下内容 parser argparse ArgumentParser des
  • 自定义 Keras 损失函数中的 conv2d

    我正在尝试基于两个图像的拉普拉斯算子在带有 TF 后端的 Keras 中实现自定义损失函数 def blur loss y true y pred weighting of blur loss alpha 1 mae losses mean
  • 是否可以在 Jupyter 笔记本中显示控制台?

    我希望能够使用 Jupyter 笔记本中的控制台在环境中进行摆弄 添加额外的单元格意味着我总是必须滚动到最底部或在我想要 类似控制台 文本字段的任何地方创建新单元格 是否可以有一个永久的控制台窗口 例如在窗口底部 Thanks 您可以启动连
  • 如何使直方图列的宽度都相同

    我在操作直方图时遇到了一些麻烦 我有一个包含两列的 df 我将它们绘制为堆叠直方图 我将它们放入特定的垃圾箱中 请参阅下面的代码 但我想在最后制作一个大垃圾箱 4000 10000 但是 默认情况下 大垃圾箱的列宽很大 有没有办法让这个大垃
  • python:UnboundLocalError:赋值前引用的局部变量“open”[重复]

    这个问题在这里已经有答案了 def read lines readFileName readfile txt f open readFileName r contents f read and so on read lines 当我运行这个
  • 从网站上抓取数字和详细信息的数据

    我想从网站上抓取联系电话以及快递服务的相应详细信息 我无法从所有快递服务中获取联系电话和其他详细信息 例如姓名地址和评级 我分析的数据位于脚本标签中 请提出修复此问题的建议 import requests import pandas as
  • 保存游戏最高分?

    我使用 pygame 在 python 中制作了一个非常简单的游戏 分数取决于玩家达到的级别 我将级别作为变量称为score 我想在游戏开始或结束时显示顶级 我会更乐意显示多个分数 但我见过的所有其他线程都太复杂 我无法理解 所以请保持简单
  • CryptoJS 和 Pycrypto 一起工作

    我正在使用 CryptoJS v 2 3 加密 Web 应用程序中的字符串 并且需要在服务器上使用 Python 对其进行解密 因此我使用 PyCrypto 我觉得我错过了一些东西 因为我无法让它工作 这是JS Crypto AES enc
  • 如何从 IDLE 命令行运行 Python 脚本?

    在 bash shell 中 我可以使用 bash 或 source 手动调用脚本 我可以在 Python IDLE 的交互式 shell 中做类似的事情吗 我知道我可以转到文件 gt gt 打开模块 然后在单独的窗口中运行它 但这很麻烦
  • Python Pandas:向类 pandas.core.series.Series 添加方法

    我想在 Python 中处理时间序列 因此 Pandas 的 Series 类非常完美 并且有很多有用的方法 现在我想添加一些我需要但未实现的方法 例如 假设我有兴趣添加一个方法 该方法将两次一值附加到时间序列中 让我们调用该方法appen
  • 将 .parquet 编码为 io.Bytes

    目标 将 Parquet 文件上传到 MinIO 这需要将文件转换为字节 我已经能够做到这一点了 csv json and txt bytes data to csv encode utf 8 bytes json dumps self d

随机推荐

  • C# 结合 GeckoFX + Tor.NET 库

    我正在尝试结合 GeckoFx 库和 Tor NET 库 在我的代码中 我做好了使用 tor 网络的所有准备 ClientCreateParams createParameters new ClientCreateParams create
  • Netbeans 8.2 无法验证 Git 凭据?

    我正在制作一个 Java 项目 该项目已在 github 上进行了多次提交 我最近将 Kubuntu 上的操作系统版本从 17 10 gt 18 04 更改 并安装了带有 Java 版本 1 8 0 171 的 Netbeans 8 2 以
  • Flutter插件:InAppPurchasePlugin.java使用未经检查或不安全的操作

    当我尝试在应用程序 pubspec yaml 文件中添加 in app purchase 插件时 会发生以下错误 就在添加插件之后 与任何特定代码无关 Note Users tanzimfahim flutter pub cache hos
  • GetAltTabInfo 用法?

    我无法使用 GetAltTabInfo 可能是一个愚蠢的错误 但这有什么问题呢 HWND taskSwitcher FindWindow L TaskSwitcherWnd L Task Switching ALTTABINFO altTa
  • 如何在android中的字符串中的每个“\n”之后添加行间距?

    正如问题所明确指出的那样 我想在每个之后添加一个小行距 n在 Android 资源文件的字符串中定义 假设我们在 xml 中定义了一个字符串 如下所示
  • 重置表单,无需 JavaScript? (输入类型=重置不起作用)

    好吧 我想标题已经说明了一切 我正在寻找一种重置表单中所有字段的方法 我尝试过以下一些方法
  • 跨多个服务器扩展 Socket.IO

    我一直在寻找有关为 Node js Socket IO 安装设置多服务器集群的帮助 这就是我正在尝试做的 在 F5 负载均衡器中有 1 个 VIP 指向n运行 Express 和 Socket IO 的 Node 服务器数量 让客户端通过以
  • 我应该如何 scipy.optimize 具有边界的多元且不可微的函数?

    我遇到了以下优化问题 目标函数是一个多变量且不可微的函数 它将标量列表作为参数并返回标量 它是不可微的 因为函数内的计算基于 pandas 和一系列滚动 std 等操作 伪代码如下 def target function x list gt
  • 如何强制 Xcode 使用自定义编译器?

    我想强制 Xcode 使用自定义编译器 从 src 构建的 clang llvm 以便我可以使用 clang 插件 我的Xcode版本是7 3 1 人们说使用自定义工具链是可能的 我没有对它们进行研究 因为更简单的解决方案对我来说效果很好
  • 如何更新 npm 模块,忽略 git 存储库

    我分叉了一个 npm 模块 现在它是一个 git 存储库 所以我的 package json dependencies some module git https github com my name some module git 分叉的
  • Git 存储库内部格式解释

    有没有关于 Git 如何在其存储库中存储文件的文档 我尝试在互联网上搜索 但没有可用的结果 也许我使用了不正确的查询 或者也许这是一个伟大的秘密 Git 存储库内部格式 让我解释一下 为什么我需要这些火箭科学信息 我正在使用 C 从存储库中
  • 使用 ruby​​ 迭代 yaml 数组

    我申请了YAML load file到我的示例文件 languages name English iso 639 en native name English region UK US name Klingon iso 639 tlh na
  • Delphi 2009 中如何重定向控制台(stdin、stderr)?

    我在互联网上尝试了几个示例 但它们都不起作用 脚本未执行 也许是因为适用于 Delphi 2009 之前的 unicode 我需要运行一些 python 脚本并向它们传递参数 例如 python Plugins RunPlugin py a
  • 最有用的软件开发指标是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 通过使用一列作为新级别将列更改为多索引

    我有一个数据框 df pd DataFrame from dict Close 1 14 03 3 14 02 0 79 88 2 80 31 High 1 14 3 3 14 33 0 80 22 2 81 19 Low 1 14 03
  • 在 Node.js 中对 S3 上传进行存根

    我该如何在 Node js 中存根 S3 上传 为了获得洞察力 我使用 Mocha 进行测试 使用 Sinon 进行存根 但我愿意改变任何东西 我有一个导出执行上传功能的文件 它看起来像这样 var AWS require aws sdk
  • ASP.NET MVC 将模型与文件一起*传递回控制器

    好吧 我已经研究了几个小时了 但我根本找不到解决方案 我想从我的用户那里获取一些数据 首先 我使用控制器创建一个接收模型的视图 public ViewResult CreateArticle Article newArticle new A
  • 为什么这个 python 循环会泄漏内存?

    我正在编写一个自定义文件系统爬虫 它通过 sys stdin 传递数百万个 glob 来进行处理 我发现运行脚本时 其内存使用量随着时间的推移而大幅增加 整个过程几乎停止了 我在下面写了一个最小的案例来说明问题 我是否做错了什么 或者我在
  • 在 angularJS 中单击一键后禁用提交按钮

    我想单击一下后禁用按钮 Code
  • 熊猫“DataFrameGroupBy”和“SeriesGroupBy”

    我承认我不是 Python 专家 但我仍然发现与 Pandas 打交道DataFrameGroupBy and SeriesGroupBy物体异常违反直觉 我有 R 背景 我有下面的数据框 import pandas as pd impor