Python-按多列分组并获取最大值或总和

2024-05-07

我有兴趣获得产品价格的最大值。

这是输入数据。

我想按州、国家/地区分组

我如何对这两列进行分组以获得价格的最大值。

import csv
import locale
from itertools import groupby

locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) 

total_price = 0
max_price = 0
reader = csv.DictReader(open('/Users/myuser/Downloads/SalesData.csv', 'rU'), dialect='excel')

groups = groupby(reader, lambda d: d['State'])

result = [max(g, key=lambda d: d['State']) for k, g in groups]

for row in reader:
    print row["State"], row["Country"], locale.atoi(row["Price"])
    max_price = max(row.iteritems(), key=operator.itemgetter(1))
    total_price += locale.atoi(row["Price"])    

与熊猫的使用。我可以在不使用 pandas 的情况下得到这个吗?

import pandas as pd
from pandas import DataFrame
import locale

locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) 


df = pd.read_csv('/Users/myuser/Downloads/SalesData.csv', index_col=False, header=0,thousands=',')

print df.groupby(["Country","State"]).max()["Price"]

itertools.groupby仅适用于使用与 groupby 相同的键函数排序的列表,如文档 https://docs.python.org/2/library/itertools.html#itertools.groupby -

itertools.groupby(iterable[ key])

创建一个迭代器,从可迭代对象中返回连续的键和组。键是计算每个元素的键值的函数。如果未指定或为 None,则 key 默认为恒等函数并返回未更改的元素。一般来说,可迭代对象需要已经在相同的键函数上进行排序。

所以为了实现你想要的itertools.groupby,您很可能需要首先根据两者对数据进行排序'Country' and 'State',然后对其进行 groupby 。

另外,在服用时max()你应该使用'Price' not 'State'。例子 -

reader = csv.DictReader(open('/Users/myuser/Downloads/SalesData.csv', 'rU'), dialect='excel')

sortedreader = sorted(reader, key=lambda d: (d['Country'], d['State']))

groups = groupby(sortedreader, key=lambda d: (d['Country'], d['State']))

result = [(k, max(g, key=lambda d: d['Price'])) for k, g in groups]

我将密钥添加到结果中,以识别哪个Country/State每个最大值对应。之后你可以迭代result并打印每个(如果这是您真正想要的)。

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

Python-按多列分组并获取最大值或总和 的相关文章

随机推荐

  • 如何在位置中使用 Nginx Regexp

    Web 项目将静态内容放入 some content img 文件夹中 url规则为 img some md5 但文件夹中的位置 content img 前两位数字 Example url example com img fe5afe048
  • Rails——自我与@

    我正在关注 Michael Hartl 的 RoR 教程 它涵盖了密码加密的基础知识 这是当前的用户模型 class User lt ActiveRecord Base attr accessor password attr accessi
  • 实现用户定义的算术函数

    如何添加函数 例如汉明权重 并在右侧出现的表达式中使用它是一些 is 2 goal 像 goal expansion 或 term expansion 这样的东西可以帮助这里吗 我承认这不是一个大功能 但它可以提高我的一些 Prolog 程
  • 如何从 dll 导出 C++ 类? [复制]

    这个问题在这里已经有答案了 我有一个有两个重载函数的类 如何从 dll 导出它以及如何由其他 C 类使用它 我的班级是这样的 define DECLDIREXP declspec dllexport define DECLDIRIMP de
  • 如何在 Spring RestTemplate 中禁用 URL 编码?

    String url serverUrl metadata getUri response restTemplate exchange url metadata getAction requestEntity metadata getRes
  • MySQL GROUP 通过还是使用 PHP?

    我有一个看起来很简单的问题 但我只是想问你如何解决它 在 MySQL 表中有以下结构 provider artist a 1 a 2 a 3 b 4 现在需要在 HTML 中回显一个列表 例如 provider a 1 2 3 provid
  • Python 调度一个作业,每个工作日开始,每小时运行一次

    我目前有一个示例代码定义为 import schedule import time def job t print I m working t return schedule every day at 01 00 do job It is
  • 如何替换cloudinary中的图像并保持相同的URL?

    我在 cloudinary 中有一个图像 我想替换它但保留原始 URL 可能吗 是的 可以更新图像并保持相同的 URL 当您上传新图像时 您希望使其 public id 与您尝试替换的现有图像相同 然后您的 Cloudinary 帐户将被更
  • 如何在 Azure 中调试测试发送?

    I am trying to setup a successfull push notifications between my Net backend and ios client in azure I followed this htt
  • MonoDevelop - 代码窗口颜色方案

    MonoDevelop 中有没有办法自定义代码窗口配色方案 我想要类似的东西黑曜石之子 http studiostyl es schemes son of obsidian如果可能的话 是的 转到 MonoDevelop 语法突出显示选项面
  • 继承模板的排序顺序

    使用 Sitecore 6 6 我们正在构建一些继承许多基本模板的模板 这对于重用和标准化我们的代码非常有用 因为所有字段都存储在常量文件中以便于引用 然而 我们似乎无法定义这些继承模板的显示顺序 无论如何 模板似乎都遵循它们添加的原始顺序
  • 如何在cxf-maven-plugin中定义wsdl的密码

    我想使用 cxf maven plugin 根据此文档从 WSDL 生成 Java 代码 http cxf apache org docs maven cxf codegen plugin wsdl to java html http cx
  • Dingo API 删除“数据”信封

    有没有一种简单的方法可以从 Dingo API 响应中删除 数据 信封 当我使用这个 Transformer 来转换用户模型时 class UserTransformer extends EloquentModelTransformer L
  • 尝试 SSH 时设备的 ioctl 不合适

    我正在尝试通过 SSH 连接几台服务器并尝试获取sudo l每个服务器的输出 下面是我正在执行的脚本 bin bash serverlist tmp servers while IFS read r server netgroup user
  • unity 3d 根据加速度计旋转游戏对象

    我想做一款类似 神庙逃亡 的游戏 我需要根据设备倾斜的程度来旋转播放器的平台 我正在尝试加速计 但无法使游戏对象倾斜 请指导我 谢谢 这是我的代码 我之前在注释中使用了代码 现在我尝试使用注释中的代码 public class tilt M
  • 如何将 Enzyme Shallow 与 Jest 快照结合使用

    我正在尝试使用shallow https github com airbnb enzyme blob master docs api shallow md from enzyme https github com airbnb enzyme
  • 如何在 iText 中获取新页面

    去新页面有点问题pdfContentByte 我使用下面的代码将数据放在第一页之后到下一页 但不幸的是iText不生成新页面 step1 itextDocument new com itextpdf text Document PageSi
  • 使用 Metro 风格应用程序启动桌面应用程序

    有没有办法从 Windows 8 上的 Metro 风格应用程序启动桌面应用程序 我正在尝试创建一些简单的桌面应用程序快捷方式 以替换开始屏幕上看起来不合适的桌面图标 我只需要一些超级简单的东西 最好是用 C 编写 以便在应用程序加载后立即
  • 如何比较 ASCII 值

    我想将字母的 ASCII 值存储到变量中 我该怎么做 例如 r ASCII variable 82 main character character read from a file variable r ascii in this cas
  • Python-按多列分组并获取最大值或总和

    我有兴趣获得产品价格的最大值 这是输入数据 我想按州 国家 地区分组 我如何对这两列进行分组以获得价格的最大值 import csv import locale from itertools import groupby locale se