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

使用Pandas实现COVID-19疫情数据查询及函数参数异常问题排查

问题原因

Python不支持函数重载,你连续定义了三个同名的get_covid_data函数,后定义的会完全覆盖先定义的内容,所以最终只有最后一个对应Recovered类型的函数生效,不管传入什么参数都只会返回康复相关数据。

解决方案

只需保留一个函数,通过参数动态匹配对应的数据集字段即可,正确实现代码如下:

import pandas as pd
# 提前加载数据集(建议首次加载后缓存,避免重复请求)
dataset = pd.read_csv("http://raw.githubusercontent.com/ec-jrc/COVID-19/master/data-of-world/jrc-covid-19-all-days-of-world.csv")

def get_covid_data(country, datafield = "Deceased"):
    """Returns the selected data for the specified country.
    
    参数:
    country (str) - 选中的国家名称,示例:'Hungary'
    datafield (str) - 可选值为'Deceased'(默认)、'Positive'、'Recovered'
    
    返回值:
    元组 (cumulative, last_day),分别为累计病例数、最新一日新增病例数
    """
    # 入参和数据集列名的映射关系
    field_map = {
        "Deceased": "CumulativeDeceased",
        "Positive": "CumulativePositive",
        "Recovered": "CumulativeRecovered"
    }
    # 非法参数校验
    if datafield not in field_map:
        raise ValueError(f"datafield仅支持可选值:{list(field_map.keys())}")
    # 筛选对应国家对应字段的时序数据
    country_data = dataset.loc[dataset.CountryName == country, field_map[datafield]]
    # 计算累计值和最新日新增
    cumulative = country_data.max()
    last_day = country_data.diff().iloc[-1]
    return int(cumulative), int(last_day)

调用测试

# 测试获取意大利的阳性数据
print(get_covid_data("Italy","Positive"))
# 测试获取匈牙利的康复数据,和官方示例输出对齐
print(get_covid_data('Hungary', 'Recovered'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:06:03