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

如何用Pandas按日期汇总各国疫情数据并合并为单表?

问题描述

用户有如下疫情数据(示例):

Date_reported Country_code Country WHO_region New_cases Cumulative_cases New_deaths Cumulative_deaths
0   2020-01-03  AF  Afghanistan EMRO    0   0   0   0
1   2020-01-04  AF  Afghanistan EMRO    0   0   0   0
2   2020-01-05  AF  Afghanistan EMRO    0   0   0   0
3   2020-01-06  AF  Afghanistan EMRO    0   0   0   0
4   2020-01-07  AF  Afghanistan EMRO    0   0   0   0
... ... ... ... ... ... ... ... ...
243868  2022-10-23  ZW  Zimbabwe    AFRO    0   257893  0   5606
243869  2022-10-24  ZW  Zimbabwe    AFRO    0   257893  0   5606
243870  2022-10-25  ZW  Zimbabwe    AFRO    0   257893  0   5606
243871  2022-10-26  ZW  Zimbabwe    AFRO    0   257893  0   5606
243872  2022-10-27  ZW  Zimbabwe    AFRO    0   257893  0   5606

需要将所有国家的数据按日期合并,生成如下格式的汇总表格:

Date_reported New_cases Cumulative_cases New_deaths Cumulative_deaths
0   2020-01-03  0   0   0   0
1   2020-01-04  0   0   0   0
2   2020-01-05  0   0   0   0
3   2020-01-06  0   0   0   0
4   2020-01-07  0   0   0   0
... ... ... ... ... ... ... ... ...
243872  2022-10-27  sum  of  all    country

询问如何使用Pandas实现该需求。

解决方案

可以通过Pandas的groupby结合聚合函数快速实现日期维度的全局数据汇总,具体步骤如下:

  1. 导入Pandas并读取数据
    先确保已安装Pandas,然后读取你的数据集(假设数据存储在CSV文件中):

    import pandas as pd
    
    # 替换为你的数据文件路径
    df = pd.read_csv('your_data.csv')
    
  2. 按日期分组并聚合数值列
    以Date_reported为分组键,对需要汇总的数值列执行聚合操作:

    # 按日期分组,对目标列求和
    aggregated_df = df.groupby('Date_reported')[['New_cases', 'Cumulative_cases', 'New_deaths', 'Cumulative_deaths']].sum().reset_index()
    
    • groupby('Date_reported'):将数据按日期维度分组
    • [['New_cases', ...]]:指定需要聚合的数值型列
    • .sum():对每组内的数值列求和,得到当日全球累计/新增数据
    • .reset_index():将分组的日期从索引转为普通列,匹配目标格式
  3. 查看或保存结果
    可以直接打印结果预览,或保存为新文件:

    # 打印前5行验证
    print(aggregated_df.head())
    
    # 保存汇总结果到CSV
    aggregated_df.to_csv('daily_global_summary.csv', index=False)
    

补充说明

如果原始数据中的Cumulative_cases和Cumulative_deaths本身是各国截至当日的累计值,直接求和会导致重复计算,此时应该取每组的最大值(即当日全球最高累计值,或理解为当日全球累计总和的正确统计方式),代码调整为:

aggregated_df = df.groupby('Date_reported').agg({
    'New_cases': 'sum',
    'Cumulative_cases': 'max',
    'New_deaths': 'sum',
    'Cumulative_deaths': 'max'
}).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:05:24