You need to enable JavaScript to run this app. 基于Python的COVID-19 CSV数据groupby与melt函数开发及报错咨询
优惠活动
大模型
产品
解决方案
定价
更多

基于Python的COVID-19 CSV数据groupby与melt函数开发及报错咨询

报错根因

执行groupby聚合操作时,默认会将传入的分组键Country/Region设置为DataFrame的行索引,而非保留为普通数据列。DataFrame.melt的id_vars参数仅识别普通列、不识别行索引字段,因此会抛出“指定id_vars不存在”的错误。

原代码同时存在两个隐性问题:

  • 列重命名逻辑中,covid_case是函数传入的字符串参数,未被正确关联传入,会触发变量未定义的报错
  • 函数定义名称为meltedgroupby_covid_data,实际调用时使用的函数名拼写不匹配,会触发调用失败
实现逻辑说明

核心修复方案

在groupby聚合时添加as_index=False参数,强制让Country/Region始终作为普通列保留,不会被转为行索引,后续melt操作即可正常识别该字段。

流程合并可行性

完全可以将分组聚合、宽表转长表的操作串联在同一个函数流程中实现,不需要拆分为独立步骤。pandas本身支持链式的连续数据转换,这类串联操作是常规使用方式,不会产生额外运行开销。

可直接运行的修正代码
import pandas as pd

def melted_groupby_covid_data(hopkin_url, case_type):
    # 读取CSV源数据
    df = pd.read_csv(hopkin_url)
    # 移除不需要的维度列
    df_drop = df.drop(['Province/State', 'Lat', 'Long'], axis=1)
    # 按国家聚合,保留国家字段为普通列
    grouped_df = df_drop.groupby('Country/Region', as_index=False).sum()
    # 宽表转长表,直接指定新列名,无需后续重命名操作
    melted_df = grouped_df.melt(
        id_vars=['Country/Region'],
        var_name='Date',
        value_name=case_type
    )
    return melted_df
函数调用示例
confirmed_statistic = melted_groupby_covid_data(
    'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv',
    'Confirmed'
)

调用完成后输出的DataFrame会直接包含Country/Region、Date、Confirmed三个目标字段,完全符合预期输出要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 03:06:04