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

Pandas DataFrame指定日期区间按多字段分组求和如何实现?

实现步骤

1. 统一日期格式

首先要把date列和起止日期变量都转为Pandas的datetime格式,避免字符串比较出现逻辑错误:

# 转换日期格式
df['date'] = pd.to_datetime(df['date'])
startdate = pd.to_datetime(startdate)
enddate = pd.to_datetime(enddate)

2. 两种实现方案

方案1:用transform直接生成新列(代码更简洁)

先把不在日期区间内的销售额临时置为0,再分组求和后赋值给对应组的所有行:

df['sum_sales'] = df.assign(
    temp_sales = lambda x: x['sales'].where((x['date'] >= startdate) & (x['date'] <= enddate), 0)
).groupby(['product', 'state'])['temp_sales'].transform('sum')
方案2:先计算分组和再合并(逻辑更清晰)

先筛选符合日期要求的行,分组求和后再合并回原数据集,无匹配的分组自动补0:

# 计算符合日期区间的分组销售额总和
group_sum = df[(df['date'] >= startdate) & (df['date'] <= enddate)]\
    .groupby(['product', 'state'], as_index=False)['sales']\
    .sum()\
    .rename(columns={'sales': 'sum_sales'})

# 合并到原DataFrame
df = df.merge(group_sum, on=['product', 'state'], how='left').fillna({'sum_sales': 0})

最终输出效果

运行后得到的df如下:

dateproductstatesalessum_sales
2021-09-12item1IL55
2021-09-12item2CA715
2021-08-13item2CA815
2021-06-12item3NY100
2021-05-01item1IL115

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

相关产品推荐
方舟 Agent Plan

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

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