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

如何将印度政府网站新冠疫苗JSON数据转为指定结构的pandas dataframe

实现步骤

1. 导入依赖库

import pandas as pd
import requests # 如需直接从官方数据源拉取数据可导入

2. 读取JSON数据

支持本地文件读取和线上数据源直接读取两种方式:

  • 本地已下载文件读取:
with open("/Users/dsg281/Downloads/vacin.json", "r", encoding="utf-8") as f:
    raw_data = pd.read_json(f)
  • 直接拉取官方数据源:
data_url = "https://www.mygov.in/sites/default/files/covid/vaccine/covid_vaccine_timeline.json"
resp = requests.get(data_url)
raw_data = resp.json()

3. 展开嵌套结构生成目标DataFrame

源数据为嵌套结构,每个日期的全国数据下嵌套了对应日期的各州疫苗数据,需遍历合并后转成DataFrame:

processed_data = []
# 遍历所有日期的疫苗记录
for day_record in raw_data["vaccine_data"]:
    # 提取当前日期的全国维度公共字段
    day_common = {
        "day": day_record["day"],
        "india_dose1": day_record["india_dose1"],
        "india_dose2": day_record["india_dose2"],
        "india_total_doses": day_record["india_total_doses"]
    }
    # 合并当前日期下的所有州数据
    for state_record in day_record["vacc_st_data"]:
        merged_item = {**day_common, **state_record}
        processed_data.append(merged_item)

# 转换为目标结构DataFrame
result_df = pd.DataFrame(processed_data)

4. 可选数据清洗

如需统一字段类型、处理空值可补充以下逻辑:

# 将剂量相关字段转换为数值类型,空值统一设为NaN
numeric_cols = ["dose1", "dose2", "total_doses", "last_dose1", "last_dose2", "last_total_doses"]
result_df[numeric_cols] = result_df[numeric_cols].apply(pd.to_numeric, errors="coerce")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 17:06:04