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

如何在Pandas DataFrame中按日期求和prima_dose并新增汇总列

Pandas 按日期分组求和并映射到每行的实现方案

初始逻辑

首先导入依赖库,获取公开疫苗接种数据,筛选出年龄区间为20-29岁的所有行,删除无关字段,代码如下:

import pandas as pd
import json
import numpy
import sympy
from numpy import arange,exp
from scipy.optimize import curve_fit
from matplotlib import pyplot
import math
import decimal

df = pd.read_csv('https://raw.githubusercontent.com/italia/covid19-opendata-vaccini/master/dati/somministrazioni-vaccini-latest.csv') 

df = df[df["fascia_anagrafica"] == "20-29"]

df01=df.drop(columns= ["fornitore","area","sesso_maschile","sesso_femminile","seconda_dose","pregressa_infezione","dose_aggiuntiva","codice_NUTS1","codice_NUTS2","codice_regione_ISTAT","nome_area"])

处理后的数据每行对应20-29岁年龄组的单地区单日接种数据,其中prima_dose字段代表第一剂接种量。

现存问题

数据为意大利各地区分天上报的接种数据,同一日期会存在多条记录,对应不同地区的当日接种数据,部分日期上报记录不足21条(部分地区该日期无上报数据)。

需求

需要在dataframe中新增一列,对同一日期的所有prima_dose值求和,将该日期的总和赋值给该日期下的每一行,效果如下示例:

Dateprima_dosesum_column说明
2020-8-9113当日所有prima_dose总和1+3+4+5
2020-8-9313同上
2020-8-9413同上
2020-8-9513同上
2020-8-1028当日总和2+5+1
2020-8-1058同上
2020-8-1018同上

实现方法

使用Pandas的groupby分组结合transform方法即可实现,transform会保留原数据的行数,将分组后的聚合结果映射到对应分组的每一行:

# data为数据中日期字段的名称,若你修改了字段名请替换为对应值
df01['sum_column'] = df01.groupby('data')['prima_dose'].transform('sum')

执行上述代码后,df01中就会新增sum_column列,值为对应日期的所有第一剂接种量总和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:15:03