Python 如何提取Json数据并导出到csv
JSON示例Python 如何提取Json数据并导出到csv,python,json,python-3.x,csv,Python,Json,Python 3.x,Csv,JSON示例 { "data": { "Albania": [ { "name": "driving", "title": "driving", "values": [ { "date": "2020-01-13", "value": "100" }, { "date": "2020-01-14", "value": "95.3" }, { "date": "2020-01-15", "value": "101.43" }, { "date": "2020-01-16", "value": "9
{
"data": {
"Albania": [
{
"name": "driving",
"title": "driving",
"values": [
{
"date": "2020-01-13",
"value": "100"
},
{
"date": "2020-01-14",
"value": "95.3"
},
{
"date": "2020-01-15",
"value": "101.43"
},
{
"date": "2020-01-16",
"value": "97.2"
},
{
"date": "2020-01-17",
"value": "103.55"
我预期的CSV输出应该是这样的(作为示例仅包含3行)
世界上有许多国家。我想获得以上格式的所有数据。请帮助
我试着用
with get(URL) as req:
json_dict = req.json()
data = json_dict["data"]["Albania"][0]
name = data["name"]
title = data["title"]
Date = []
Value = []
for item in data["values"]:
date = item["date"]
Date.append(date)
value = item["value"]
Value.append(value)
out = {"Country": "Albania", "name": name, "title": title, "date": Date, "value": Value}
Data = pd.DataFrame(out, index=[0])
我尝试了这一操作,但它给出了一个错误:无法将输入数组从形状(93)广播到形状(1)这可能更容易使用将行写入CSV文件:
from requests import get
from csv import DictWriter
URL = "https://covid19-static.cdn-apple.com/covid19-mobility-data/2005HotfixDev14/v1/en-us/applemobilitytrends.json"
with get(URL) as req:
json_dict = req.json()
data = json_dict["data"]["Albania"][0]
name = data["name"]
title = data["title"]
# Open file for writing
with open(
"data.csv", mode="w", newline=''
) as csv_file:
# Create dictwriter object to use for writing
writer = DictWriter(csv_file, fieldnames=["Country", "name", "title", "date", "value"])
# Write CSV headers
writer.writeheader()
# Write each row to CSV file
for item in data["values"]:
row = {
"Country": "Albania",
"name": name,
"title": title,
"date": item["date"],
"value": item["value"],
}
writer.writerow(row)
data.csv
Country,name,title,date,value
Albania,driving,driving,2020-01-13,100
Albania,driving,driving,2020-01-14,95.3
Albania,driving,driving,2020-01-15,101.43
Albania,driving,driving,2020-01-16,97.2
Albania,driving,driving,2020-01-17,103.55
Albania,driving,driving,2020-01-18,112.67
Albania,driving,driving,2020-01-19,104.83
...
要在所有国家/地区迭代,请将此解决方案与@RoadRunner解决方案相结合
从请求导入获取
URL=”https://covid19-static.cdn-apple.com/covid19-mobility-data/2005HotfixDev14/v1/en-us/applemobilitytrends.json"
使用get(URL)作为请求:
json_dict=req.json()
对于键,json_dict['data']中的值。items()
国家=关键
对于有价值的项目:
对于值中的子项:
对于子项['values']中的s:
行={
“国家”:关键,
“名称”:项目[“名称”],
“标题”:项目[“标题”],
“日期”:s[“日期”],
“值”:s[“值”],
}
打印(行)
Country,name,title,date,value
Albania,driving,driving,2020-01-13,100
Albania,driving,driving,2020-01-14,95.3
Albania,driving,driving,2020-01-15,101.43
Albania,driving,driving,2020-01-16,97.2
Albania,driving,driving,2020-01-17,103.55
Albania,driving,driving,2020-01-18,112.67
Albania,driving,driving,2020-01-19,104.83
...