django聚合:求和然后求平均值

2024-01-11

使用 django 的 ORMannotate() and/or aggregate():我想根据一个类别字段进行汇总,然后对每个日期的类别值进行平均。我尝试用两个来做annotate()声明但得到了FieldError.

我正在这样做:

queryset1 = self.data.values('date', 'category').annotate(sum_for_field=Sum('category'))

它输出一个ValuesQuerySet具有类似内容的对象(因此类别的每个值的总和):

[{'category': 'apples', 'date': '2015-10-12', sum_for_field=2000},
 {'category': 'carrots', 'date': '2015-10-12', sum_for_field=5000},
 {'category': 'apples', 'date': '2015-10-13', sum_for_field=3000},
 {'category': 'carrots', 'date': '2015-10-13', sum_for_field=6000}, ...
]

然后我想平均sum_for_field每个日期的字段输出类似:

[ {'date': '2015-10-12', avg_final: 3500},
{'date': '2015-10-13', avg_final: 4500}, ...
]

我尝试这样做:

queryset2 = queryset1.values('date', 'sum_for_field')
result = queryset2.annotate(avg_final=Avg('sum_for_field'))

但我得到了这个FieldError:

FieldError: FieldError: Cannot compute Avg('sum_for_field'): 'sum_for_field' is an aggregate

从许多按组聚合注释中按组聚合注释通常是一个复杂的问题,但是Avg from Sum是一个特殊的容易得多 case.

表达Avg('sum_for_field')可以评估为Sum('sum_for_field') / Count('category', distinct=True)可以通过以下方式评估Aggregate() 表达式 https://docs.djangoproject.com/en/1.11/ref/models/expressions/#aggregate-expressions. The Sum('sum_for_field') equals Sum('amount').

Solution:(预期名称:型号为Data有字段的date, category, amount.)

qs = Data.objects.values('date').annotate(
    avg_final=Sum('amount') / Count('category', distinct=True)
)

(我确信当前的 Django 1.11 不会对非常类似的问题提供任何解决方案,即使使用 Subquery 类,不使用奇怪的 extra() 方法并且不使用原始 SQL)

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

django聚合:求和然后求平均值 的相关文章

  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • Python逻辑运算符优先级[重复]

    这个问题在这里已经有答案了 哪个运算符优先4 gt 5 or 3 lt 4 and 9 gt 8 这会被评估为真还是假 我知道该声明3 gt 4 or 2 lt 3 and 9 gt 10 显然应该评估为 false 但我不太确定 pyth
  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • 如何在 pytest 中将单元测试和集成测试分开

    根据维基百科 https en wikipedia org wiki Unit testing Description和各种articles https techbeacon com devops 6 best practices inte
  • 如何创建一个语句来打印以特定单词开头的单词? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 python 中打印从特定字母开始的单词 而不使用函数 而是使用方法或循环 1 我有一个字符串 想要打印以 m 开头的单词 S
  • 为什么Python的curses中escape键有延迟?

    In the Python curses module I have observed that there is a roughly 1 second delay between pressing the esc key and getc
  • 以同步方式使用 FastAPI,如何获取 POST 请求的原始正文?

    在中使用 FastAPIsync not async模式 我希望能够接收 POST 请求的原始 未更改的正文 我能找到的所有例子都显示async代码 当我以正常同步方式尝试时 request body 显示为协程对象 当我通过发布一些内容来
  • 使用 Python pandas 计算调整后的成本基础(股票买入/卖出的投资组合分析)

    我正在尝试对我的交易进行投资组合分析 并尝试计算调整后的成本基础价格 我几乎尝试了一切 但似乎没有任何效果 我能够计算调整后的数量 但无法获得调整后的购买价格有人可以帮忙吗 这是示例交易日志原始数据 import pandas as pd
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • python Soap zeep模块获取结果

    我从 SOAP API 得到如下结果 client zeep Client wsdl self wsdl transport transport auth header lb E authenticate self login res cl
  • 使用 PyTorch 分布式 NCCL 连接失败

    我正在尝试使用 torch distributed 将 PyTorch 张量从一台机器发送到另一台机器 dist init process group 函数正常工作 但是 dist broadcast 函数中出现连接失败 这是我在节点 0
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 如何链接 Django 的“in”和“iexact”查询集字段查找?

    我有一个名字列表 例如 name list Alpha bEtA omegA 目前我有以下查询集 MyModel objects filter name in name list 我希望能够以不区分大小写的方式过滤名称 我的第一个想法是使用
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li

随机推荐

  • 获取字体支持的字符 - 在 C# 中

    我有一个支持日语字符的第三方字体 我需要将其用于应用程序 每当该字体不支持某个字符时 就会绘制常见的矩形 默认字符 显然 并非所有日语字符都受支持 因为如果我尝试绘制翻译办公室给我们的翻译 就会发现有很多矩形 每当使用不支持的字符时 我都需
  • 如何将 JS 对象集合发送到 ASP.NET API 服务?

    我正在尝试将 JavaScript 对象集合发送到我的 API 服务 但服务器收到空对象列表
  • 如何同时部署两个 ClickOnce 版本?

    我希望能够为我的应用程序提供一个测试 ClickOnce 服务器 用户可以在其中并行运行生产版本和测试版本 这可能吗 我首先尝试使用以下内容AssemblyInfo cs并且还更改了 ClickOnce 部署中的名称 尽管所实现的所有这些都
  • 何时将 volatile 与寄存器/局部变量一起使用

    在 CUDA 中使用 volatile 限定符声明寄存器数组的含义是什么 当我尝试使用 volatile 关键字和寄存器数组时 它删除了溢出寄存器内存到本地内存的数量 即强制 CUDA 使用寄存器而不是本地内存 这是预期的行为吗 我在 CU
  • 访问 BeanFactoryPostProcessor 中的属性

    我正在尝试创建一些东西 它将根据可配置的属性自动创建bean 来自application yml等 因为我不能像通常那样访问属性组件BeanFactoryPostProcessor 我有点困惑如何访问它们 如何访问应用程序属性BeanFac
  • 如何在 .NET 交互式笔记本中绘制图像(C#、VS Code)

    我正在尝试使用 C 在 NET 交互式笔记本中绘制简单的图形 有点像 Dr Racket 的 C 版本 到目前为止我见过的最简单的事情是using System Drawing SFML NET Raylib cs 也可以工作 但它们会打开
  • Python 中的 NoSql 注入

    当试图提出这个问题时 我得到了this one https stackoverflow com questions 4167077 mongodb injection它使用的是Java 并且在答案中给出了一个Ruby示例 并且似乎只有在使用
  • Vaadin 通过单击按钮重定向到 URL

    我已经搜索了很长时间 但我确实无法弄清楚这一点 如何将用户重定向到新的外部链接 例如www google com 当他们点击 Vaadin 中的按钮时 到目前为止我唯一能做的就是将链接放入链接中 Link link new Link lin
  • 如何构建没有版本后缀的ffmpeg共享库

    有没有一种方法可以配置为Android构建没有版本号后缀的ffmpeg共享库 我能够使用不同的选项进行构建 但总是得到像 libavcodec so 57 这样的文件 我需要没有后缀的库 例如 libavcodec so 我认为选项 dis
  • 为什么 UDP 在其数据包中有两次“UDP 长度”字段?

    为什么 UDP 在其数据包中有两次 UDP 长度 字段 这不是多余的吗 如果需要进行某种错误检查 请提供示例 你的观察是正确的 长度字段是多余的 因为IP头和UDP头都有长度字段 我对这种冗余原因的唯一猜测是 它发生是因为 UDP 是在当时
  • 部分 .csproj 文件

    是否可以将 csproj 中的信息拆分到多个文件中 有点像项目版本partial class特征 您不能拥有多个主 csproj 但因为 csproj 的底层接线是使用 msbuild 完成的 所以您可以简单地拥有多个相互导入的部分 csp
  • SwiftUI 列表在任何视图更改时重置滚动

    我有一个非常简单的列表 其中有一些部分 在同一视图中 我还有一个按钮 当选择任何列表项时 该按钮将被启用 这是由状态变量控制的 当发生这种情况时 如果列表向下滚动 状态变量将发生变化 以启用按钮 并且所有视图将刷新 导致我的列表滚动到顶部
  • 使用 pandas 组合日期和时间列

    我有一个带有以下列的 pandas 数据框 data Date 01 06 2013 02 06 2013 02 06 2013 02 06 2013 02 06 2013 03 06 2013 03 06 2013 03 06 2013
  • 使用 memcache 进行 Ratchet 会话数据同步

    我创建了一个 Ratchet Web Socket 服务器并尝试使用 SESSIONS 在 HTTP Web 服务器 端口 80 上的 php 文件中 我像这样设置会话数据 use Symfony Component HttpFoundat
  • PBEWITHSHA256AND128BITAES-CBC-BC 在 RedHat 6.4 上创建 java.security.NoSuchAlgorithmException

    我们有一个应用程序使用Bouncy Castle使用加密数据PBEWITHSHA256AND128BITAES CBC BC算法 它运行良好Ubuntu跑步OpenJDK 1 7 但是当我们把它移到RedHat 6 4也在运行OpenJDK
  • 如何使用css3/javascript将圆分成12等份并带有颜色

    HTML div class circle p class innerCircle p div CSS circle width 450px height 450px border top 30px solid 416fa6 border
  • C 编程输入一个除以 10 的列表

    我正在尝试编写一个程序 其中用户输入随机数 程序输入从 0 到 9 的列表 例如 假设用户输入数字 12 那么屏幕应如下所示 0123456789012 其中末尾的 2 表示第 12 个数字 我已经尝试过这个 但它给了我一个无限循环 我不知
  • JRuby/Windows 和(本机)扩展如何区分它们?

    我尝试将 EventMachine 等与 JRuby 一起使用 我收到有关本机扩展的错误 我相信这是由于 Java 的限制 我认为我使用 Windows 的事实使问题进一步复杂化 如果有一些澄清 我们将不胜感激 哪些扩展可以 不能与 JRu
  • 为什么用户控制类访问从另一个线程不安全?

    正如标题所示 为什么用户控件类访问从另一个线程不安全 我听说有一种方法可以启用跨线程访问 我正在考虑这样做 有想过为什么我不应该这样做吗 看看这个 http msdn microsoft com en us library ms171728
  • django聚合:求和然后求平均值

    使用 django 的 ORMannotate and or aggregate 我想根据一个类别字段进行汇总 然后对每个日期的类别值进行平均 我尝试用两个来做annotate 声明但得到了FieldError 我正在这样做 queryse