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

如何在pandas中实现多个日期列的数据聚合统计

解决方案

你可以先将原宽表转为长格式,再分组统计后转回目标宽表格式,具体实现代码如下:

# 1. 转换为长格式,过滤掉未接种的空日期记录
melted = df.melt(id_vars='name', 
                 value_vars=['vaccine_1', 'vaccine_2'],
                 var_name='vaccine_type',
                 value_name='date').dropna(subset=['date'])

# 2. 按日期和疫苗剂次分组统计人数,再转为目标宽表结构
result = melted.groupby(['date', 'vaccine_type'])['name'].count()\
               .unstack(fill_value=0)\
               .rename(columns={'vaccine_1':'vaccine_1_total', 'vaccine_2':'vaccine_2_total'})\
               .reset_index()

print(result)

如果偏好单独统计再合并的逻辑,也可以用如下简化写法:

# 分别统计两剂疫苗的每日接种量
v1_count = df.groupby('vaccine_1')['name'].count().rename('vaccine_1_total')
v2_count = df.groupby('vaccine_2')['name'].count().rename('vaccine_2_total')

# 按日期对齐合并两个统计结果,缺失值填充为0
result = pd.concat([v1_count, v2_count], axis=1).fillna(0).reset_index(names='date')

输出结果示例

datevaccine_1_totalvaccine_2_total
02021-01-2020
12021-02-2010
22021-02-2212
32021-02-2310
42021-02-2501
52021-03-2201

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:18:02