为什么 groupby 操作的行为不同

2023-11-30

使用时pandas groupby 函数并在 groupby 之后操作输出,我注意到某些函数在作为索引返回的内容以及如何操作方面表现不同。

假设我们有一个包含以下信息的数据框:

    Name   Type  ID
0  Book1  ebook   1
1  Book2  paper   2
2  Book3  paper   3
3  Book1  ebook   1
4  Book2  paper   2

if we do

df.groupby(["Name", "Type"]).sum()  

我们得到一个DataFrame:

             ID
Name  Type     
Book1 ebook   2
Book2 paper   4
Book3 paper   3

其中包含一个 MultiIndex 以及 groupby 中使用的列:

MultiIndex([('Book1', 'ebook'),
            ('Book2', 'paper'),
            ('Book3', 'paper')],
           names=['Name', 'Type'])

和一列称为ID.

但如果我申请size()函数,结果是Series:

Name   Type 
Book1  ebook    2
Book2  paper    2
Book3  paper    1
dtype: int64

最后,如果我做一个pct_change(),我们只得到结果 DataFrame 列:

    ID
0   NaN
1   NaN
2   NaN
3   0.0
4   0.0

TL;博士。我想知道为什么有些函数返回一个Series而其他一些人则DataFrame因为这让我在处理同一数据帧中的不同操作时感到困惑。


来自文档

Size:

Returns
Series
Number of rows in each group.

For the sum,因为您没有传递 sum 列,所以它将返回没有 groupby 键的数据框

df.groupby(["Name", "Type"])['ID'].sum()  # return Series

功能类似于diff and pct_change不是 agg,它会返回与 agg 相同的值index作为原始数据框,对于count , mean, sum它们是 agg,返回值和groupby键作为索引

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

为什么 groupby 操作的行为不同 的相关文章

随机推荐

  • 使用 TFS API 将代码签入 TFS 服务器

    我正在编写 C 代码来将代码签入 TFS 服务器 Workspace WS VersionControl GetWorkspace TeamProject WS Map TFSMapServerPath LocalWorkingPath i
  • “尝试”关键字的位置差异

    我有一个音频播放器的全局变量 在变量初始化之前放置 try 字有什么区别 do try audioPlayer AVAudioPlayer contentsOf audioURL catch 并在调用构造函数之前放置 try do audi
  • 在sqlite android中选择查询

    String temp address nothing try String selectQuery SELECT lastchapter FROM Bookdetails INTO temp address WHERE bookpath
  • 如何使用 Datagridview 绑定源 C# 更新 SQL Server 数据库

    我正在用 C 编写一个 Winforms 应用程序 使用户能够使用 datagridview 编辑和更新数据库 问题是 我无法让它发挥作用 我唯一能做到的就是更新 datagridview 显示的内容 但是当我进入数据库表时 数据没有变化
  • Safari WIndows 和透明 Flash

    编辑 该问题现在似乎仅限于 Windows 版 Safari 大约在 Windows 4 版 Safari 发布时 我开始从用户那里听到 wmode transparent 不再在 Safari 中工作 我已经用谷歌搜索了很多次 但没有找到
  • 这在文档中是什么意思:方括号后跟逗号([,)[重复]

    这个问题在这里已经有答案了 今天这引起了我的注意jQuery 的 API 文档为了closest选择器 closest selector context 到底是做什么的 context 意思是 我知道我可以在那里放置一个变量或 jQuery
  • Visual Studio 2012 C++ 标准输出

    编译 Win32 应用程序时 fprintf stdout stderr 在 Visual Studio 中打印到哪里 我一直听到它进入输出 但我看不到它 在 C 中没有控制台窗口的情况下打印到输出日志的标准方法是什么 如果您的程序与 SU
  • 如何为多模块 Maven 项目的每个模块创建自包含(独立)jar

    我有一个多模块 Maven 项目 父 POM 和各个模块的 pom 工作正常 因为每个模块中的代码运行良好 没有任何依赖问题 mvn package目标运行时没有任何警告 错误 现在 我需要为每个模块创建一个 jar 项目结构及其依赖项大致
  • Linq 按小数字段排序像字符串一样排序?

    我完全感到困惑 在互联网上找不到任何关于此的信息 所以我一定做错了什么 positionsRepo GetAllTrades OrderByDescending x gt x TotalPLPercent ToList TotalPLPer
  • 用于发布管理的交互变量

    In Build definition for VSTS you could declare a variable and allow to change it at queue time as in this snapshot 我可以对发
  • 未找到时区区域

    我正在创建一个使用 Oracle 数据库的 C MVC 项目 在尝试连接到数据库时 出现以下错误 ORA 00604 递归 SQL 级别 1 发生错误ORA 01882 未找到时区区域 当我尝试通过 SQL Developer 连接时 它工
  • RNCamera 错误:TypeError:CameraManager.checkIfRecordAudioPermissionsAreDefined 不是函数

    Unhandled promise rejection TypeError CameraManager checkIfRecordAudioPermissionsAreDefined is not a function In CameraM
  • 从 Docker 容器连接到 CosmosDB

    我正在尝试学习 Docker 并慢慢地构建一个解决方案 我创建了一个 Azure Function App 它公开了一个 Http 端点 我创建了 Docker 文件来在 Linux 容器中构建和运行解决方案 图片 mcr microsof
  • 在javascript中获取多个选择器内的h4选择器的值

    我有一个ul列出在HTML我正在努力争取inner的文本li元素 我将稍微简化一下示例 以便于理解我想要做什么 我有以下内容ul与列表项 ul li class item div class item row h4 class item t
  • 检查库是否适用于特定版本的 Java

    可以采取什么方法来验证库是否与特定版本的 Java 兼容 示例 库 X 是在 Java 1 7 上编译的 因此它可能无法在 Java 1 7 或更低版本上运行 谢谢 最好的方法是通过检查字节码执行者规则可以通过使用将其应用于您的构建mave
  • 在 Ruby 中加密/解密 3DES

    我有一个 key bin 文件 其内容大致如下 12 110 93 14 48 服务正在使用它来解密 3DES 内容 但我需要通过 Ruby 对其进行加密 我已经尝试了很多关于如何设置密钥以及如何使用它的方案 但到目前为止还没有结果 尝试将
  • Jest 中的存根 I18next useTranslation 挂钩不会触发 toHaveBeenCalled

    我正在尝试存根 监视翻译 而不仅仅是嘲笑它 即使在这种最基本的情况下 我似乎也无法触发它 ComponentName jsx import useTranslation from react i18next export default f
  • 在 Windows 8.1 上运行 Windows 10 通用应用程序

    是否可以在 Windows 8 1 上运行 Windows 10 通用应用程序 我查了很多资料 但在MSDN等上没有找到明确的答案 Thanks 答案是否定的 如需进一步说明 最好在论坛上发帖 https social msdn micro
  • 缓冲折线以创建多边形的有效算法?

    我需要编写一些代码来缓冲一条线以创建多边形 如下所示 http www sli unimelb edu au gisweb BuffersModule Buff line htm 按照概述的步骤 我可以围绕不交叉或曲线太紧的简单线条创建多边
  • 为什么 groupby 操作的行为不同

    使用时pandas groupby 函数并在 groupby 之后操作输出 我注意到某些函数在作为索引返回的内容以及如何操作方面表现不同 假设我们有一个包含以下信息的数据框 Name Type ID 0 Book1 ebook 1 1 Bo