You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中基于另一列的向下取整值对单列值求和?

销售数据按价格区间聚合方案

嗨,我来帮你搞定这个数据聚合的需求!你需要把价格落在同一美元整数区间(向下取整后的数值)的商品,汇总它们的访问量和销量,同时还要保留原始价格方便后续做join操作对吧?下面给你两种常用工具的实现方法:

方法一:SQL实现(适合数据库端处理)

如果你的数据存在数据库里,用窗口函数就能轻松解决——既保留每一行的原始数据,又能计算对应价格区间的总和:

SELECT
  product,
  price, -- 保留原始价格,用于后续join操作
  FLOOR(price) AS price_bucket, -- 生成向下取整的价格区间标识
  SUM(visits) OVER (PARTITION BY FLOOR(price)) AS total_visits_in_bucket,
  SUM(sales) OVER (PARTITION BY FLOOR(price)) AS total_sales_in_bucket,
  conversion -- 保留原始转化率字段
FROM sales_data;

解释:PARTITION BY FLOOR(price)会把所有价格向下取整后相同的行归为一组,SUM() OVER()函数会把每组的访问量/销量总和,赋值给组内的每一行。这样你拿到的结果里,每一行都保留了原始的price字段,同时多了对应区间的汇总数据,直接就能用来做后续的join。

方法二:Python Pandas实现(适合本地数据处理)

如果是用Pandas处理本地数据集,用groupby + transform组合就能实现同样的效果:

import pandas as pd

# 假设你的数据存储在DataFrame df中
df['price_bucket'] = df['price'].apply(lambda x: int(x))  # 对正数价格,int()等价于向下取整
# 计算每个价格区间的总访问量,映射回原数据行
df['total_visits_in_bucket'] = df.groupby('price_bucket')['visits'].transform('sum')
# 计算每个价格区间的总销量,映射回原数据行
df['total_sales_in_bucket'] = df.groupby('price_bucket')['sales'].transform('sum')

解释:transform方法会在分组计算总和后,把结果匹配到原DataFrame的每一行里,这样所有原始字段(包括price)都会被保留,完全满足后续join的需求。

内容的提问来源于stack exchange,提问作者Brad Davis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:34:26