如何从C3.ai COVID-19数据湖中的获取API将获取返回对象转换为csv?

时间:2020-04-14 00:45:38

标签: json python-3.x

我正在对C3.ai COVID-19数据湖进行一些访存API调用。我怎样才能最好地将其转换为csv,以便于阅读?作为参考,我正在运行以下示例代码:

import requests, json

url = "https://api.c3.ai/covid/api/1/outbreaklocation/fetch/"

request_data = {
    "spec": {
        "include": "id,name,population2018",
        "limit": 500
    }
}
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json"
}

response = requests.post(url=url, json=request_data, headers=headers)

fetch_object = json.loads(response.text)

fetch_object现在是python dict。但我想将其转换为csv。我一般该如何做?我可以获取一个或多个字段,如include参数的spec字段中所指定。

3 个答案:

答案 0 :(得分:3)

def convert_fetchResult_to_Pandas(fetch_object, required_fields):
    fetch_objs = fetch_result["objs"]
    df = pd.read_json(json.dumps(fetch_objs))
    return df[required_fields]

然后可以打电话给

df = convert_fetchResult_to_Pandas(fetch_object, ["id,name,population2018"])
csv_string = df.to_csv()

答案 1 :(得分:0)

根据您的需求,也可能值得考虑使用pd.json_normalize(fetch_object['objs'])而不是pd.read_json(json.dumps(fetch_object['objs']))。它将平整case对象中的所有嵌套字典,并用点分隔列名称中的变量级别。

答案 2 :(得分:0)

考虑尝试使用开放源代码仓库c3covid19。您可以找到docs here。这是用于Python的非官方的c3 covid19数据湖连接包装器。

安装

pip install c3covid19

运行

from c3covid19 import c3api

cnx=c3api()

request_data = {
    "spec": {
        "include": "id,name,population2018",
        "limit": 500
    }
}

output=cnx.request(
    data_type='outbreaklocation', 
    parameters=request_data, 
    api='fetch', 
    output_type='csv', 
    outfile='./output'
)