Pandas 按唯一计数分组作为新列

2023-12-01

我想添加一个新列col在我的 pandas 数据框中,计算公式为:

select count(distinct ITEM) as col
from base_data
where STOCK > 0 
group by DEPT, CLAS, DATE;

我正在做的事

assort_size = base_data[(base_data['STOCK'] > 0)]\
.groupby(['DEPT','CLAS','DATE'])['ITEM']\
.transform('nunique')

基本上对于每个部门、班级、日期组合,我想获取库存中的商品数量。所以我想要与父数据框合并的结果,但结果如下pandas.core.series.Series因此我不能append (axis=1)它返回(行数不同,例如 1.6 M 与 1.4 M)。还有我没有DEPT, CLAS, DATE要加入的列。我可以在这里做什么来获取按列分组的数据框?

有没有更好的方法直接在父pandas数据框中创建新列(base_data)而不是像我一样创建一个新对象assort_size?


您可以使用boolean indexing首先,然后groupby with nunique最后join:

base_data = pd.DataFrame({"DEPT": ["a", "a", "b", "b"],
                   "CLAS":['d','d','d','d'],
                   "STOCK": [-1, 1, 2,2],
                   "DATE":pd.to_datetime(['2001-10-10','2001-10-10',
                                          '2001-10-10','2001-10-10']),
                   "ITEM":[1,2,3,4]})

print (base_data)
  CLAS       DATE DEPT  ITEM  STOCK
0    d 2001-10-10    a     1     -1
1    d 2001-10-10    a     2      1
2    d 2001-10-10    b     3      2
3    d 2001-10-10    b     4      2

assort_size = base_data[(base_data['STOCK'] > 0)]\
.groupby(['DEPT','CLAS','DATE'])['ITEM'].nunique().rename('n_item')
print (assort_size)
DEPT  CLAS  DATE      
a     d     2001-10-10    1
b     d     2001-10-10    2
Name: n_item, dtype: int64

print (base_data.join(assort_size, on=['DEPT','CLAS','DATE']))
  CLAS       DATE DEPT  ITEM  STOCK  n_item
0    d 2001-10-10    a     1     -1       1
1    d 2001-10-10    a     2      1       1
2    d 2001-10-10    b     3      2       2
3    d 2001-10-10    b     4      2       2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas 按唯一计数分组作为新列 的相关文章

  • 出现导入错误:无法从“随机”导入名称“随机”[重复]

    这个问题在这里已经有答案了 我在我的计算机上多次运行我的代码 但没有出现此错误 但突然间这个来了 File e Python 3 8 0 lib site packages comtypes client code cache py lin
  • Python中使用cv2获取当前视频播放位置

    我正在尝试使用 CV2 和 Python 从播放视频中获取当前播放时间位置 如果可能 以毫秒为单位 目前我正在使用此示例代码来播放视频文件 import cv2 import numpy as np file name 2 mp4 wind
  • Python 按文件夹模块导入

    我有一个目录结构 example py templates init py a py b py a py and b py只有一个类 名称与文件相同 因为它们是猎豹模板 纯粹出于风格原因 我希望能够在中导入和使用这些类example py像
  • 如何在 pygame 中聚焦光线或如何仅绘制窗口的某些圆形部分?

    对于这一点 如果您熟悉它 请想想 超级马里奥制造2 中嘘关卡中的黑暗模式 我试图在角色周围创建一个圆形聚光灯 这也将使圆圈范围内的任何内容都可见 例如部分站在地板上 敌人或场景中的任何其他物体 我的计划是首先绘制圆圈 聚光灯 然后绘制场景
  • Pygame 玩家精灵没有出现

    我一直在为学校计算机课做这个项目 但无法让玩家精灵出现 有人可以帮忙吗 当我运行主游戏循环时 除了玩家精灵之外 所有内容都正确显示 它应该由于箭头输入而在屏幕上移动并受到重力的影响 当我删除图像并仅使用对象类和矩形时 该代码也有效 impo
  • 确定Python模块中的函数是否可用

    我正在研究一些使用Python套接字的代码socket fromfd http docs python org library socket html socket fromfd功能 但是 此方法并非在所有平台上都可用 因此我正在编写一些后
  • Python MySQL 模块

    我正在开发一个需要与 MySQL 数据库交互的 Web 应用程序 但我似乎找不到任何真正适合 Python 的模块 我特别寻找快速模块 能够处理数十万个连接 和查询 所有这些都在短时间内完成 而不会对速度产生重大影响 我想我的答案将是游戏领
  • ValueError:在 R 中使用 keras 模型时在用户代码中

    我正在尝试使用 R 在 R 中运行一维 CNNkeras包裹 我正在使用以下代码 library MASS library keras Create some data data Boston data lt Boston create a
  • Python变量赋值问题

    a b 0 1 while b lt 50 print b a b b a b 输出 1 2 4 8 16 32 wheras a b 0 1 while b lt 50 print b a b b a b 输出 正确的斐波那契数列 1 1
  • 在 Windows 上将 NumPy 与 BLAS 链接

    我正在尝试在 Windows 系统上安装 Theano 并且需要安装 BLAS 和 LAPACK 我的 System32 文件夹中有这些的 dll 文件 当我运行 numpy config来自 Anaconda 的 show 库的路径正确显
  • 按字段名称对命名元组列表进行排序的 Pythonic 方法

    我想对命名元组列表进行排序 而不必记住字段名的索引 我的解决方案看起来相当尴尬 希望有人能有一个更优雅的解决方案 from operator import itemgetter from collections import namedtu
  • 为图例中的点设置固定大小

    我正在制作一些散点图 我想将图例中的点的大小设置为固定的相等值 现在我有这个 import matplotlib pyplot as plt import numpy as np def rand data return np random
  • 如何将时间间隔划分为不同长度的部分?

    我有一个从 0 到t 我想把这个区间分成一个以2 25 2 25 1 5为周期的累积序列 方法如下 input start 0 stop 19 output sequence 0 2 25 4 5 6 8 25 10 5 12 14 25
  • 尝试修复我的功能

    我正在开发一个函数 我必须返回一个元组 其中第一个参数是最大数字的 str 第二个参数是 int 列表 这是示例以及我为该函数编写的内容 投票 G G N G C G 1 3 0 1 您必须将最大值的位置映射到正确的一方 parties N
  • 仅对某些行的不同大小的两个 pandas 数据帧的列进行求和

    我有两个 pandas 数据框 如下所示 df1 n column1 0 5 0 0 0 1 6 0 0 0 2 7 0 0 0 3 8 0 0 0 4 9 0 0 0 5 10 0 0 0 df2 n column2 0 6 0 1 0
  • Tornado websocket handler , self.close() 正在关闭连接而不触发 on_close() 方法

    我是 python stackoverflow tornado 的新手 所以请耐心等待 纠正我 我正在使用龙卷风开发实时应用程序 当我在 Websocket 处理程序类中调用 self close 时 on close 方法不会启动 这次我
  • 避免在列表理解中计算相同的表达式两次[重复]

    这个问题在这里已经有答案了 我在列表理解中使用一个函数和一个 if 函数 new list f x for x in old list if f x 0 令我恼火的是这个表达f x 在每个循环中计算两次 有没有办法以更清洁的方式做到这一点
  • python 函数返回 javascript date.getTime()

    我正在尝试创建一个简单的 python 函数 它将返回与 javascript 相同的值new Date getTime 方法 如所写here http www w3schools com js js dates asp javascrip
  • 在字典理解中为 locals() 添加下标失败并出现 KeyError [重复]

    这个问题在这里已经有答案了 我对 Python 的奇怪行为感到困惑locals 基本上我想从字典中获取一个项目locals 在字典理解中 但它失败了 这是一个非常基本的事情 所以 gt gt gt foo 123 gt gt gt bar
  • PyQt QFileDialog exec_ 很慢

    我正在使用自定义QFileDialog因为我想选择多个目录 但是exec 功能非常慢 我不明白为什么 我正在使用最新版本的 PyQt 代码片段 from PyQt4 import QtGui QtCore QtNetwork uic cla

随机推荐

  • 使用 alpha png 和背景重复时出现 IE10 伪像

    我在 Windows8 下的 IE10 中遇到以下问题 仅使用带有重复 x 背景的简单 div 并且在使用透明 png 工件时出现 结果 http s18 postimg org 9tn3dlsqx artifacts png 这是示例代码
  • PyCharm 使用海龟出现错误语法错误

    下面的代码工作完美 但是 PyCharm 抱怨语法错误forward 100 usr bin python from turtle import forward 100 done Since turtle是一个标准库我认为我不需要做额外的配
  • 在openlayers3中不使用任何图像绘制箭头

    如何在 Openlayers 3 地图中的矢量图层上绘制箭头 我尝试使用 canvaselement 创建箭头 但不知道如何在 ol3 地图上绘制它 画布元素不是必需的 您可以从以下位置获取箭头示例Openlayers 网站并添加 2 个自
  • ssh 动态端口转发

    我想使用 ssh动态端口转发在我的安卓代码中 我用过图书馆jcraft 但不幸的是这个库不支持动态端口转发并且只是支持本地端口转发 and 远程端口转发 换句话说 我想在我的 android 代码中像这样进行 ssh ssh D 10000
  • javascript按空格分割字符串,但忽略引号中的空格(注意不要也用冒号分割)

    我需要帮助在 javascript 中按空格 分割字符串 忽略引号表达式内的空格 我有这个字符串 var str Time Last 7 Days Time Last 30 Days 我希望我的字符串被分割为 2 Time Last 7 D
  • Rails 子控制器?

    我对 Rails 还很陌生 有一个问题我不太明白 四处寻找架构上 正确 的方法 问题与我所说的子控制器有关 场景是 这 我有一系列页面 其中有一个包含某种形式的面板 一些信息 想想 gitHub 右上角的用户面板 因此 在我的应用程序中 我
  • Oauth2认证成功后获取用户信息

    在我的 iPhone 应用程序中 我使用 google 登录Oauth2 我正在关注这条指令并成功登录 void viewController GTMOAuth2ViewControllerTouch viewController fini
  • 如何反转 Java 中字符串的大小写?

    我想改变一个字符串 使所有大写字符变成小写 所有小写字符变成大写 数字字符将被忽略 所以 AbCdE123 变成 aBcDe123 我想一定有一种方法可以迭代字符串并翻转每个字符 或者也许有一些正则表达式可以做到这一点 Apache Com
  • Sass 中 @if 语句中的 @import

    我只想加载登录页面所需的 css 以提高性能 在我的其他页面上 我想要一个分组的 css 文件 该文件将缓存在包含所有 css 的每个页面上 我有以下文件 minifiedcssforloginpage scss grouped pages
  • Android 模拟按键

    如何以编程方式模拟 Droid 上的按键操作 我想模仿手动按键 在机器人上显示有人正在按键 但它是以编程方式完成的 有一些解决方案涉及IWindowManager 但这在新的 SDK 中不再是一个选项 您可以使用检测 即从活动的 onCre
  • 如何将我自己的 jQuery 版本与浏览器化模块一起使用

    我应该预先澄清 我的问题是关于 Javascript 中的闭包和客户端模块模式 这不是关于如何使用 jQuery noConflict 我有一些 Javascript 人们可以将其添加到他们的网站中 我希望我自己的代码能够访问 变量 该变量
  • Java 中的 Arrays.fill 多维数组

    如何在不使用循环的情况下在 Java 中填充多维数组 我试过了 double arr new double 20 4 Arrays fill arr 0 这导致java lang ArrayStoreException java lang
  • Objective-C SSL 同步连接

    我对 Objective C 有点陌生 但遇到了一个我无法解决的问题 主要是因为我不确定我是否正确实现了解决方案 我正在尝试使用同步连接使用自签名证书连接到 https 站点 我正在得到 错误域 NSURLErrorDomain代码 120
  • NSFetchedResultsController ,其中包含由字符串的第一个字母创建的部分

    在 iPhone 上学习核心数据 关于核心数据用部分填充表视图的示例似乎很少 这核心数据手册示例使用部分 但它们是从模型中的完整字符串生成的 我想按照姓氏的第一个字母将核心数据表组织成多个部分 就像地址簿一样 我可以为每个人创建另一个属性
  • SWF 对象 - 我为什么要使用它

    我的所有网站都需要对搜索引擎友好 即搜索引擎可读 然而 我有点喜欢flash并且希望以友好的方式集成它 我可以选择 swfobject 它允许正确的页面名称并向用户和搜索引擎提供不同的页面 但是 我想知道为什么需要使用 swfobject
  • fmt.Scanf 在 Go 中无法正常工作

    我正在尝试一个应该测试 fmt Scanf 的片段 但它似乎没有按预期工作 package main import fmt time func main fmt Println What is your favorite color var
  • 类型错误:super() 至少需要 1 个参数 [Python 3] [重复]

    这个问题在这里已经有答案了 在下面的代码中 尽管我重新检查了超过 15 分钟 但仍然出现相同的错误 为了您的信息 我在 sublime text 上运行它并出现错误 类型错误 super 至少需要 1 个参数 给定 0 个 代码如下所示 c
  • Fruchterman Reingold 的吸引力如何与 Boost Graph Library 配合使用

    我正在 Boost Graph Library 中学习 Fruchterman Reingold 算法 通过阅读文档 我知道该算法是根据图形布局计算所有节点的位置 但我的问题是我无法理解Boost Graph Library中吸引力的计算步
  • 套接字断开通知方法

    只是寻找一个可能的解决方案来识别客户端何时断开连接 我找到了这个 public bool IsConnected Socket s try return s Poll 1 SelectMode SelectRead s Available
  • Pandas 按唯一计数分组作为新列

    我想添加一个新列col在我的 pandas 数据框中 计算公式为 select count distinct ITEM as col from base data where STOCK gt 0 group by DEPT CLAS DA