【发布时间】:2021-12-15 20:23:18
【问题描述】:
我想从位于 here 的 owid covid19 json 数据创建一个数据框。 json 在数据列中有一组每日记录,这与国家索引一起是我试图制作的数据框。
{"AFG":{"continent":"Asia","location":"Afghanistan","population":39835428.0,"population_density":54.422,"median_age":18.6,"aged_65_older":2.581,"aged_70_older":1.337,"gdp_per_capita":1803.987,"cardiovasc_death_rate":597.029,"diabetes_prevalence":9.59,"handwashing_facilities":37.746,"hospital_beds_per_thousand":0.5,"life_expectancy":64.83,"human_development_index":0.511,"data":[{"date":"2020-02-24","total_cases":5.0,"new_cases":5.0,"total_cases_per_million":0.126,"new_cases_per_million":0.126,"stringency_index":8.33},{"date":"2020-02-25","total_cases":5.0,"new_cases":0.0,"total_cases_per_million":0.126,"new_cases_per_million":0.0,"stringency_index":8.33},
到目前为止,我一直将文件直接加载到数据框中
df = pd.read_json('owid-covid-data.json', orient='index')
然后对数组进行标准化
data = pd.concat([pd.DataFrame(json_normalize(key)) for key in df['data']])
除了删除索引并因此不提供标识符以连接回静态值之外,这工作正常。
我还想有一种比我使用过的更有效的标准化方法。
非常感谢任何帮助!
【问题讨论】:
-
这不是有效的 JSON。您的第二个字符是一个左括号,这是不允许的,并且您使用的是单引号而不是双引号。这只是您数据的 Python 表示形式吗?
-
@TimRoberts 是的,抱歉,这是 Python 表示,现在更新
-
您的数据是一个字典列表,例如
[{"AFG": ...}]?
标签: python json pandas dataframe