如何从一系列字典中创建键和值的数据框[重复]
Posted
技术标签:
【中文标题】如何从一系列字典中创建键和值的数据框[重复]【英文标题】:How to create dataframe of the keys and values from a series of dictionaries [duplicate] 【发布时间】:2021-09-16 14:26:53 【问题描述】:我将 json 数据读入数据框,第一列的数据格式如下:
0 'name': 'Mark Vande Hei', 'craft': 'ISS' 10 success
1 'name': 'Oleg Novitskiy', 'craft': 'ISS' 10 success
如何创建一个包含 2 列的新数据框:根据上述数据命名和制作?
url_crew = 'http://api.open-notify.org/astros.json'
crew = pd.read_json(url_crew)
print(crew)
【问题讨论】:
您的输入是 JSON,并且您想将其转换为 dtaframe(正确地,而不仅仅是一个大字符串)。没有数据框的“名称”元素之类的东西。您只是指数据框列中 JSON 的结构。 【参考方案1】:Pandas 有一个非常方便的实用功能,pd.json_normalize
可以做到这一点。
它接受一个字典列表或一系列字典。
url_crew = 'http://api.open-notify.org/astros.json'
crew = pd.read_json(url_crew)
df = pd.json_normalize(crew["people"])
print(df)
输出
name craft
0 Mark Vande Hei ISS
1 Oleg Novitskiy ISS
2 Pyotr Dubrov ISS
3 Thomas Pesquet ISS
4 Megan McArthur ISS
5 Shane Kimbrough ISS
6 Akihiko Hoshide ISS
7 Nie Haisheng Tiangong
8 Liu Boming Tiangong
9 Tang Hongbo Tiangong
【讨论】:
【参考方案2】: url_crew = 'http://api.open-notify.org/astros.json'
crew = pd.read_json(url_crew)
>>> df = pd.concat([crew.drop(['people'], axis=1), crew['people'].apply(pd.Series)], axis=1)
>>> df = df[['name','craft']]
>>> df
name craft
0 Mark Vande Hei ISS
1 Oleg Novitskiy ISS
2 Pyotr Dubrov ISS
3 Thomas Pesquet ISS
4 Megan McArthur ISS
5 Shane Kimbrough ISS
6 Akihiko Hoshide ISS
7 Nie Haisheng Tiangong
8 Liu Boming Tiangong
9 Tang Hongbo Tiangong
【讨论】:
以上是关于如何从一系列字典中创建键和值的数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章