熊猫“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” 的相关文章

  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 绘制随时间变化的分类数据计数

    我有一个数据框 df 其中有一列包含分类数据 ETH 带有 DateTimeIndex 我想绘制类别counts随着时间的推移 它们按天索引 我最好按年绘制它们 df pd DataFrame County 0 Bexar 3 Nueces
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 识别 pandas 数据框中各组之间的差异

    我有一个按日期和 ID 索引的 pandas 数据框 我想 识别日期之间增删的ID 将 ID 添加到另一个数据帧以及添加 删除的日期 date ID value 12 31 2010 13 0 124409 9 0 555959 1 0 7
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐

  • 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