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

如何将groupby结果应用到DataFrame所有行?按日期、产品ID求售价最大值

解决方案

可以用 pandas 的 groupby 结合 transform 方法实现,这是处理这类需求的高效方式,完全避免循环,适合大数据量场景:

步骤说明

  • 按 Date 和 Product_id 分组
  • 对分组后的 Sell_price 列应用 max 函数
  • 通过 transform 将结果映射回原 DataFrame 的每一行,保持原维度不变

代码示例

假设你的 DataFrame 名为 df,执行以下代码即可得到目标结果:

import pandas as pd

# 模拟你的数据(可替换为实际数据)
data = {
    'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-02'],
    'Product_id': ['A', 'A', 'B', 'B', 'C'],
    'Sell_price': [100, 150, 200, 180, 300]
}
df = pd.DataFrame(data)

# 新增列存储每组的最大售价
df['Max_Sell_price'] = df.groupby(['Date', 'Product_id'])['Sell_price'].transform('max')

print(df)

输出结果

DateProduct_idSell_priceMax_Sell_price
2023-01-01A100150
2023-01-01A150150
2023-01-02B200200
2023-01-02B180200
2023-01-02C300300

这个方法的核心是 transform,它会将分组计算后的结果按原数据的索引匹配填充,确保输出维度和原 DataFrame 完全一致,且内部是向量化操作,处理大数据量的性能远优于循环。

内容的提问来源于stack exchange,提问作者Mohammad Isaac Hosseini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:55:14