当前位置: 首页 > 面试题库 >

pandas groupby,并设置项目集

张晨朗
2023-03-14
问题内容

我正在使用pandas groupby,并希望应用该功能来根据组中的项目进行设置。

结果如下TypeError: 'type' object is not iterable

df = df.groupby('col1')['col2'].agg({'size': len, 'set': set})

但是以下工作原理:

def to_set(x):
    return set(x)

df = df.groupby('col1')['col2'].agg({'size': len, 'set': to_set})

以我的理解,这两种表达方式相似,请问第一种无效的原因是什么?


问题答案:

更新资料

  • 直到大熊猫0.22版,这才成为问题。
  • 从熊猫1.1.2版开始,这不是问题。汇总set,不会导致TypeError: 'type' object is not iterable
    • 不确定何时更新功能。

原始答案

这是因为set是,type type而是to_settype function

type(set)
<class 'type'>

def to_set(x):
    return set(x)

type(to_set)

<class 'function'>

根据文档,.agg()期望:

arg:functiondict

用于汇总组的功能。

  • 如果为a function,则必须在传递aDataFrame或传递给时 起作用DataFrame.apply

  • 如果传递了dict,则键必须是DataFrame列名。

可接受的组合是:

  • string cythonized函数名称
  • function

  • list 功能的

  • dict 列数->函数

  • dict名称嵌套->函数字典



 类似资料:
  • 主要包括: 项目信息及项目授权管理的配置。 7.1.1 项目信息 展示在新建项目时,您所填写的项目信息及备注,并且可在此进行修改。 7.1.2 授权管理 授权的主体为用户邮箱账号。 授权管理主要包含 项目的授权,及站点的授权。 分别介绍如下: 分类 授权项 解释 项目权限 无法查看项目用户 被授权账号拥有访问项目的权限,而无法查看项目是否有其他授权用户 项目权限 允许查看项目用户 被授权账号拥有访

  • Angular 2采用将应用程序分为许多不同组件的方法,每个组件可以有多个文件。以这种方式分离应用程序逻辑对程序员是有好处的,但是会减损用户体验,因为这样做会增加页面加载时间。 HTTP2旨在以一种方式解决这个问题,但是直到更多的知道它的效果,我们将需要捆绑我们的应用程序的不同部分,并压缩它。 我们的平台,浏览器,必须继续提供所有现有代码的向后兼容性,并且这需要慢慢移动添加到HTML / CSS

  • 项目设置 面板通过主菜单的 项目->项目设置... 菜单打开,这里包括所有特定项目相关的设置。这些设置会保存在项目的 settings/project.json 文件里。如果需要在不同开发者之间同步项目设置,请将 settings 目录加入到版本控制。 分组管理 目前项目设置中的分组管理主要为 碰撞体系统 提供分组支持,详情请参考 碰撞分组管理。 模块设置 这里的设置是针对发布 Web 版游戏时引

  • 项目设置面板通过主菜单的 项目 -> 项目设置 菜单打开,这里包括所有特定项目相关的设置,这些设置将会影响到整个游戏项目的预览、构建等。这些设置会保存在项目的 settings / packages 文件夹里。如果需要在不同开发者之间同步项目设置,请将 settings 目录加入到版本控制。 通用设置 默认 Canvas 设置 默认 Canvas 设置包括设计分辨率和适配屏幕宽度/高度,用于规定在

  • 我对AEM非常陌生,我正试图在Eclipse中基于internet上的某些教程创建一个AEM项目。 使用此url安装AEM插件后,我尝试创建该项目。我尝试了不同的方法,其中一些失败了。 方法1:Mars Eclipse、Java 1.8和AEM 6.2选择Archetype-10,选择Setup new server,输入服务器详细信息,并在创建项目时部署它,我在其中遇到了一个错误“ 服务器不支持