将 pandas groupby 结果与小计转换为相对值

2023-12-11

我遇到过一个插入小计的好解决方案进入 pandas groupby 数据框。但是,现在我想修改结果以显示相对于小计的相对值,而不是绝对值。

这是显示 groupby 的代码:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        "Category": np.random.choice(["Group A", "Group B"], 50),
        "Product": np.random.choice(["Product 1", "Product 2"], 50),
        "Units_Sold": np.random.randint(1, 100, size=(50)),
        "Date": np.random.choice(
            pd.date_range("1/1/2011", "03/31/2011", freq="D"), 50, replace=False
        ),
    }
)

iList = ["Category", "Product"]

pvt = pd.concat(
    [df.assign(**{x: "" for x in iList[i:]}).groupby(iList).sum() for i in range(1, 3)]
).sort_index()

print(pvt)

这导致

                    Units_Sold
Category Product              
Group A                   1170
         Product 1         434
         Product 2         736
Group B                    980
         Product 1         437
         Product 2         543

我尝试过一些类似的事情

pvt.transform(lambda x: (round(x / x['Group A', ''],2)*100).astype(int).astype(str)+"%")

但显然这仅计算相对于第一行的值。

我正在寻找的是

                    Units_Sold
Category Product              
Group A                   100%
         Product 1         37%
         Product 2         63%
Group B                   100%
         Product 1         45%
         Product 2         55%

多谢!


Use GroupBy.apply按第一级MultiIndex使用 lambda 函数:

f = lambda x: (x / x.iloc[0]).mul(100).round(2).astype(int).astype(str)+"%"
df = pvt.groupby(level=0).apply(f)
print (df)
                   Units_Sold
Category Product             
Group A                  100%
         Product 1        49%
         Product 2        50%
Group B                  100%
         Product 1        52%
         Product 2        47%

Or use GroupBy.transform with GroupBy.first:

df = (pvt.div(pvt.groupby(level=0).transform('first'))
         .mul(100)
         .round(2)
         .astype(int)
         .astype(str)+"%")
print (df)

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

将 pandas groupby 结果与小计转换为相对值 的相关文章

  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 导入错误:没有名为flask.ext.login的模块

    我的flask login 模块有问题 我已经成功安装了flask login模块 另外 从命令提示符我可以轻松运行此脚本 不会出现错误 Python 2 7 r27 82525 Jul 4 2010 07 43 08 MSC v 1500
  • 未知错误:Chrome 无法启动:异常退出

    当我使用 chromedriver 对 Selenium 运行测试时 出现此错误 selenium common exceptions WebDriverException Message unknown error Chrome fail
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • PySpark groupByKey 返回 pyspark.resultiterable.ResultIterable

    我试图找出为什么我的 groupByKey 返回以下内容 0
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如果 PyPy 快 6.3 倍,为什么我不应该使用 PyPy 而不是 CPython?

    我已经听到很多关于PyPy http en wikipedia org wiki PyPy项目 他们声称它比现有技术快 6 3 倍CPython http en wikipedia org wiki CPython口译员开启他们的网站 ht
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是

随机推荐

  • 如何以编程方式从 Android 删除 SQLite 数据库

    我想从以下位置删除数据库文件Android file system以编程方式 我可以启动 shell 脚本吗adb它又在 Android 空间中运行 shell 脚本来删除数据库 我可以在短时间内完成这件事吗JUnit测试用例 带有syst
  • 哈希表和Trie(前缀树)如何选择?

    因此 如果我必须在哈希表或前缀树之间进行选择 那么导致我选择其中之一的区别因素是什么 从我自己天真的角度来看 使用 trie 似乎有一些额外的开销 因为它不是存储为数组 但就运行时间而言 假设最长的键是最长的英语单词 它本质上可以是 O 1
  • 使用 LightOpenID 登录/注销用户状态

    我正在尝试在我的网站上使用 LightOpenId 来登录 注销用户 这工作正常 但我的问题是 如何跟踪用户登录 注销状态并采取相应的操作 我希望用户仅在登录时访问我的网站功能 并在用户注销时重定向到登录页面 提前致谢 你的问题实际上与Op
  • 创建自定义键盘控件 [Elm]

    我正在尝试为 4 人游戏创建自定义键盘控件 现在 密钥是这样预先确定的 type Orient x Int y Int type GameInput space Bool delta Time so1 Orient so2 Orient s
  • 在 bash 中获取某些列

    假设我有一个数组 其中数组中的每个元素都采用以下格式 someText x1 y1 z1 x2 y2 z2 x3 y2 z3 KEY 构建新数组的方法是什么 其中新数组中的元素只是前一个数组的第一列和最后一列 你可以做这样的事情 其中OLD
  • CloudFormation - 从 Lambda 代码访问参数

    我有一个CloudFormation模板看起来像这样 AWSTemplateFormatVersion 2010 09 09 Description This template will deploy stuff Parameters my
  • 如何使用文件权限保护 Laravel 中的 .env 文件?

    我的 env 文件包含所有凭据 可通过 URL 访问 我发现了一些问题 比如如何在 laravel 5 4 中保护 env 文件 上面说要使用htaccess以防止用户访问该文件 但我更喜欢使用文件权限 所以我将权限更改为0111它只能执行
  • select语句中列的顺序会影响查询速度吗?

    例如 我有一个这样的数据库 id fname lname sex age tel cell address If I do select cell fname address sex而不是做select fname sex cell add
  • getResourceAsStream() 没有看到资源

    我想从我的 jar 文件中解压资源 jar的结构如下 my jar META INF resources my exe my dll my namespace UnpackResourceFromThisClass class 我想从 ja
  • 在响应文本中显示换行符

    我使用 Swagger UI v2 2 0 我有一个返回纯文本的 RESTful 方法 我想用换行符显示此文本 目前 返回的文本包含换行符 但它们显示为 n The Content Type响应头是text plain 我可以返回文本并插入
  • 如何仅使用 php 脚本播放声音文件

    请告诉我如何使用 php 脚本播放声音文件 wav 我需要从数据库获取值 并根据这些值我应该播放声音文件 预先感谢 iam 使用 Linux 操作系统 PHP只是一种处理语言 它cannot为用户播放音频 它can显示将播放 wav 声音的
  • ImageMagick 与 VS2012

    首先非常感谢您阅读我的帖子 我正在尝试使用图像魔术师 with VS2012 on Windows 7 64 位用于图像旋转 这是我所做的 下载图像魔术师对于 Windows 并解压缩它 进入 ImageMagick 6 8 8 Visua
  • ContentFile 未保存在 Django 模型 FileField 中

    我在 Django 模型中将字符串保存为文件时遇到问题 因为每当我尝试取回数据时 它都会给我一个 ValueError 属性没有关联的文件 详细信息如下 MODEL class GeojsonData models Model dname
  • 参考我自己的类型的最佳方式

    abstract class A
  • 无法将实体框架连接到本地 SQL Server Express

    我有连接字符串
  • MPMoviePlayerController 在 iPhone 应用程序中反向(向后)播放电影不流畅

    我正在开发一个 iPhone 应用程序 我需要反转视频播放 我目前正在使用 XCode 4 2 我正在尝试使用 MPMoviePlayerController 反向播放电影 但反向播放时就没有正向播放那么流畅 它变得有点断断续续 一点也不光
  • SQL 中日期范围内的工作日数

    这比看起来更难 我需要一个函数来计算日期范围内给定工作日的数字 我不需要任何循环或递归 SQL 有数以百万计的例子就是这样做的 我需要一个快速的计算函数 函数的输入将是工作日 起始日期 今日 counting fridays set dat
  • 将更接近的白色像素组合在一起,并在 OpenCV 中在它们周围绘制一个矩形

    我想将这些彼此更接近的白色像素分组 并使用 C 在 OpenCV 中在它们周围绘制一个矩形 原图 预期结果 我是 OpenCV 新手 任何帮助将不胜感激 您可以根据给定的谓词对白色像素进行分组分割 在这种情况下 您的谓词可以是 将给定欧氏距
  • 如何将滚动条附加到文本小部件?

    我试图将滚动条附加到我的文本字段 但无法执行此操作 这是代码段 self scroller Scrollbar self root self scroller place x 706 y 121 self outputArea Text s
  • 将 pandas groupby 结果与小计转换为相对值

    我遇到过一个插入小计的好解决方案进入 pandas groupby 数据框 但是 现在我想修改结果以显示相对于小计的相对值 而不是绝对值 这是显示 groupby 的代码 import pandas as pd import numpy a