【问题标题】:What is the most effective method for adding nested data to a pandas dataframe?将嵌套数据添加到熊猫数据框的最有效方法是什么?
【发布时间】:2020-07-20 09:24:21
【问题描述】:
我一直在尝试将来自 API 的 JSON 数据添加到 pandas 数据框中。这是我尝试过的代码:
url = 'https://api.covid19api.com/summary'
df = pd.read_json(url)
print(df.head())
运行此代码时,我收到以下错误:
ValueError:将字典与非系列混合可能会导致模棱两可
订购。
对此的任何建议都会有所帮助。提前致谢。
【问题讨论】:
标签:
python
pandas
dataframe
【解决方案1】:
嗨,马特,欢迎来到 SO。每当您使用json 时,最好先获取数据并查看它。在您的特定情况下,密钥 Global 与 Countries 中的密钥不同,这就是您收到该错误的原因
import urllib.request
import json
import pandas as pd
url = 'https://api.covid19api.com/summary'
response = urllib.request.urlopen(url)
# the following is the data you should explore
data = json.loads(response.read())
df = pd.DataFrame(data["Countries"])
【解决方案2】:
JSON 有几个元素(“全球”、“国家/地区”和“日期”),因此将其拆分为单独的数据框是有意义的,而使用 pandas.read_json() 并不容易做到这一点。
import requests
url = 'https://api.covid19api.com/summary'
r = requests.get(url)
data = r.json()
global_data = pd.DataFrame(data['Global'])
countries = pd.DataFrame(data['Countries'])