我正在对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
字段中所指定。
答案 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'
)