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

Python/Pandas多列按不同规则分组聚合 批量处理需求列求和的优化方案

解决方法

你可以通过动态构造聚合规则字典实现批量配置,不需要手动逐个写30个需求列的聚合规则,同时还能优化大体积数据的计算性能。


具体实现步骤

  1. 首先预处理日期列,指定统一的截止日期
import pandas as pd
import datetime as dt

# 转换日期格式
df['Date'] = pd.to_datetime(df['Date'])
# 按需求固定截止日期为2021-01-01,不要用数据集最大日期推导避免逻辑偏差
cutoffDate = pd.to_datetime('2021-01-01')
  1. 批量筛选所有需求列
    如果你的需求列统一带Demand后缀,可以自动匹配:
demand_cols = [col for col in df.columns if col.endswith('Demand')]

如果命名无统一规则,也可以手动维护需求列列表:

demand_cols = ['MenswearDemand', 'HomeDemand'] # 补充所有你需要求和的需求列即可
  1. 动态构造聚合规则字典
agg_rules = {
    'Date': lambda x: (cutoffDate - x.max()).days
}
# 批量给所有需求列添加求和规则
agg_rules.update({col: 'sum' for col in demand_cols})
  1. 执行分组聚合
newdf = df.groupby('CustomerID').agg(agg_rules)

性能优化提示

你原有代码里用lambda x: x.sum()的写法对1500万行数据效率很低,直接传字符串'sum'调用pandas内置的Cython优化聚合函数,计算速度能提升数倍。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:45:03