df.groupby([pd.Grouper(freq=‘1M‘, key=‘Date‘), ‘Buyer‘]).sum()

news/2025/1/6 11:00:04/

df.groupby([pd.Grouper(freq='1M', key='Date'), 'Buyer']).sum() 用于根据特定的时间频率和买家(Buyer)对 DataFrame 进行分组,然后计算每个分组的总和。下面是对这行代码的逐步解释:

  1. df.groupby([...]):这个操作会根据传入的多个条件进行分组。[...] 中的条件决定了如何分组数据。

  2. pd.Grouper(freq='1M', key='Date')

    • key='Date' 表示我们要根据名为 'Date' 的列来进行分组。
    • freq='1M' 指定了按月进行分组,1M 表示按一个月的时间间隔进行分组。
    • pd.Grouper() 允许我们对日期列进行重新分组,在此例中就是将数据按每个月进行分组。
  3. 'Buyer':在这个分组条件中,我们还指定了根据 'Buyer' 列进行分组,即按买家的不同进行分组。

  4. .sum():在分组后,.sum() 计算每个分组内所有数值型列的和。

示例:

假设你有一个类似于以下结构的 DataFrame:

python">import pandas as pd# 创建一个示例 DataFrame
data = {'Date': ['2021-01-01', '2021-01-15', '2021-02-01', '2021-02-20', '2021-03-05'],'Buyer': ['A', 'B', 'A', 'B', 'A'],'Amount': [100, 200, 150, 300, 250]
}
df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'])  # 确保 'Date' 列是日期格式print(df)

输出将是:

        Date Buyer  Amount
0 2021-01-01     A     100
1 2021-01-15     B     200
2 2021-02-01     A     150
3 2021-02-20     B     300
4 2021-03-05     A     250

执行 df.groupby([pd.Grouper(freq='1M', key='Date'), 'Buyer']).sum() 后:

python">result = df.groupby([pd.Grouper(freq='1M', key='Date'), 'Buyer']).sum()
print(result)

输出结果将会是:

                   Amount
Date       Buyer          
2021-01-31 A          100B          200
2021-02-28 A          150B          300
2021-03-31 A          250

解释:

  • 按月分组:数据按 'Date' 列中的日期,按每个月的时间频率进行分组。每个分组的时间范围是该月的最后一天(例如,2021-01-31 代表 1 月份的数据)。
  • 按买家分组:除了按月分组外,数据还根据 'Buyer' 列进行分组。
  • 计算总和:对每个分组内的 Amount 列进行求和。

例如,在 2021-01-31 这一组中,买家 A 的总金额为 100,买家 B 的总金额为 200。


http://www.ppmy.cn/news/1560664.html

相关文章

基于 GitHub API 的 Issue 和 PR 自动化解决方案

文章目录 摘要引言优化 Issue 和 PR 管理的方法工具选择流程优化 自动化 Issue 和 PR 管理代码逻辑详解获取 Issue 数据为 Issue 添加标签将 Issue 分配给开发者主逻辑 实际运行效果进一步扩展QA 环节总结参考资料 摘要 在开源项目中,Issue 和 Pull Request&#x…

yolo格式数据集转换到coco格式

将YOLO格式数据集转换为COCO格式需要处理图像、标注文件以及生成COCO格式的JSON文件。以下Python代码实现,考虑了各种可能的因素,包括图像尺寸、类别映射、标注框的归一化处理等。 YOLO格式说明 标注文件:每个图像对应一个.txt文件&#xff…

WPF自定义任务栏缩略图

任务栏缩略图预览 在Windows7系统上,微软首次推出任务栏缩略图预览功能。 当鼠标划会任务栏上的程序时,会打开一个预览窗口,可以对整个窗口内容进行预览。 效果如下: 在后面的Windows 8/8.1/10/11系统上,都延续了这…

【MyBatis-Plus 条件构造器】全面解析 Wrapper

在 MyBatis-Plus 中, 条件构造器 是一个强大的工具,能够帮助我们灵活地构建 SQL 查询条件,而无需手写繁琐的 SQL 语句。本文将从基础到高级,带你全面了解条件构造器的使用方法及其链式构造能力。 一、什么是条件构造器&#xff1f…

vim、watch、cp和mv

一、vim使用技巧 vim主配置文件:/etc/vimrc (对所有用户都生效) vim子配置文件:vim ~/.vimrc (只对当前用户生效) 可写入: set nu 显示行号 ts2 tab键长度为两个空格(默认为8个空格…

【Rust练习】26.Package and Crate

练习题来自:https://practice-zh.course.rs/crate-module/crate.html 建议在命令行下操作完成本节内容,Windows 11/10 首选 Windows 终端,好看,支持渲染中文字体,缺点是功能太少了;其次推荐 mobaxterm&…

pytorch中nn.Conv2d详解及参数设置原则

文章目录 基础参数1. in_channels (输入通道数)2. out_channels (输出通道数)3. kernel_size (卷积核大小)4. stride (步幅)5. padding (填充)6. dilation (膨胀)7. groups (分组卷积)8. bias (偏置) 如何设置参数?1. **in_channels 和 out_channels(输入…

5G终端串口AT命令 FM650 常用命令

5G终端串口AT命令 FM650 常用命令 5G终端串口AT命令 FM650 常用命令 #状态查询 MODULE_PORT/dev/ttyUSB0echo -e "ATE0\r\n" > $MODULE_PORT echo -e "ATGTUSBMODE?\r\n" > $MODULE_PORT echo -e "ATGTRAT?" > $MODULE_PORT ec…