- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个嵌套字典 (json),它是从非官方谷歌字典 API 返回的。
看起来像这样:
{'word': 'slack',
'phonetic': '/slak/',
'meaning': {'adjective': [{'definition': 'Not taut or held tightly in position; loose.',
'example': 'a slack rope',
'synonyms': ['loose',
'limp',
'not taut',
'not tight',
'hanging',
'flapping']},
{'definition': '(of business) characterized by a lack of work or activity; quiet.',
'example': 'business was rather slack'},
{'definition': 'Having or showing laziness or negligence.',
'example': 'slack accounting procedures',
'synonyms': ['lax',
'negligent',
'neglectful',
'remiss',
'careless',
'slapdash',
'slipshod',
'lackadaisical',
'lazy',
'inefficient',
'incompetent',
'inattentive',
'offhand',
'casual',
'disorderly',
'disorganized']},
{'definition': '(of a tide) neither ebbing nor flowing.',
'example': 'soon the water will become slack, and the tide will turn'}],
'noun': [{'definition': 'The part of a rope or line which is not held taut; the loose or unused part.',
'example': 'I picked up the rod and wound in the slack',
'synonyms': ['looseness', 'play', 'give']},
{'definition': 'Casual trousers.'},
{'definition': 'A spell of inactivity or laziness.',
'example': 'he slept deeply, refreshed by a little slack in the daily routine',
'synonyms': ['lull',
'pause',
'respite',
'spell of inactivity',
'interval',
'break',
'hiatus',
'breathing space']}],
'verb': [{'definition': 'Loosen (something, especially a rope).'},
{'definition': 'Decrease or reduce in intensity, quantity, or speed.',
'example': 'the flow of blood slacked off',
'synonyms': ['reduce',
'lessen',
'slacken',
'slow',
'ease off',
'ease up']},
{'definition': 'Work slowly or lazily.',
'example': 'she reprimanded her girls if they were slacking',
'synonyms': ['idle',
'shirk',
'be inactive',
'be lazy',
'be indolent',
'sit back and do nothing',
'waste time',
'lounge about']},
{'definition': 'Slake (lime).'}],
'adverb': [{'definition': 'Loosely.',
'example': 'their heads were hanging slack in attitudes of despair'}]}}
这就是松弛这个词的含义。要获得这个含义,我们可以通过谷歌搜索其含义或简单地使用以下代码:
import numpy as np
import pandas as pd
import json
from pandas.io.json import json_normalize
from io import StringIO
import requests
word = 'slack'
url = 'https://googledictionaryapi.eu-gb.mybluemix.net/?define=' + word
response = requests.get(url)
content = response.content.decode('utf-8') # list of ugly strings
j = json.loads(content) # json list having nested dictionary
j = j[0]
j
现在,字典 j 有三个键。
j.keys() # dict_keys(['word', 'phonetic', 'meaning'])
我主要感兴趣的是它的含义:
j['meaning'].keys() # dict_keys(['adjective', 'noun', 'verb', 'adverb'])
为了获取 pandas 数据框,我使用了以下代码:
json_normalize(data=j['meaning'])
这给出了一个只有 4 列的数据框。
这里,每个词性(形容词、名词等)都必须有“定义”键,“示例”和“同义词”是可选的。
j['meaning']['adjective'][0].keys() # dict_keys(['definition', 'example', 'synonyms'])
如何获取 4 * 3 = 12 列的数据框,列名称如 adjective_definition
、adjective_example
、....、verb_synonyms
?
我尝试从以下链接中获取一些想法:
http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.io.json.json_normalize.html
https://www.kaggle.com/jboysen/quick-tutorial-flatten-nested-json-in-pandas/notebook
pandas.io.json.json_normalize with very nested json
但是,无法解决问题。我们将不胜感激。
最佳答案
我想使用json_normalize的 record_path 参数将解决您的问题。由于 record_path 旨在成为 json 对象或记录列表的单个路径,因此我必须多次调用 json_normalize,然后将结果连接起来以获得包含所需数据的数据帧。您还可以尝试使用 record_prefix 参数来设置列命名约定。希望这有帮助!
from pandas.io.json import json_normalize
from io import StringIO
import requests
word = 'slack'
url = 'https://googledictionaryapi.eu-gb.mybluemix.net/?define=' + word
response = requests.get(url)
content = response.content.decode('utf-8') # list of ugly strings
j = json.loads(content) # json list having nested dictionary
j = j[0]
df_adj = json_normalize(data=j['meaning'], record_path=["adjective"], record_prefix="adjective.")
df_verb = json_normalize(data=j['meaning'], record_path=["verb"], record_prefix="verb.")
df_adv = json_normalize(data=j['meaning'], record_path=["adverb"], record_prefix="adverb.")
df_noun = json_normalize(data=j['meaning'], record_path=["noun"], record_prefix="noun.")
df = pd.concat([df_adj, df_verb, df_adv, df_noun], axis=1)
print(df.head(3))
关于python - pandas json_normalize 所有列都有嵌套字典扁平化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54209963/
我正在使用 json_normalize 中给出的示例此处提供的文档pandas.json_normalize — pandas 1.0.3 documentation ,不幸的是,我无法粘贴我的实际
我一直在尝试规范化一个非常嵌套的json文件,稍后我将进行分析。我正在努力解决的是如何进一步深入到正常化。 我浏览了pandas.io.json.json_normalize文档,因为它完全按照我想要
我有一个需要展平的嵌套 JSON 结构。在使用 JSON 规范化时,它会展平所有键。但是,我想在保留嵌套的其他键的同时展平特定键。如何使用 JSON 规范化来实现这一点。我正在尝试做的事情的详细描述如
我有一个没有统一结构的嵌套 json 文件,如下例所示: [{ "name": "Jon", "last": "Jonny"}, {"name": "Jimmy", "last": "johnson
我正在尝试使用 json_normalize 来展平嵌套字典。我的数据是这样的: data = [ {'gra': [ { 'A': 1,
我正在使用亚马逊数据集来回答问题。 亚马逊的代码是: import pandas as pd import gzip def parse(path): g = gzip.open(path, 'r
我正在尝试创建一个 API,从 poloniex 获取历史数据,供我的神经网络用于学校项目的学习。 我得到一个json文件,但问题是poloinex_df是“空”,所有信息都在index/column
我有一个嵌套字典 (json),它是从非官方谷歌字典 API 返回的。 看起来像这样: {'word': 'slack', 'phonetic': '/slak/', 'meaning': {'a
我已经使用以下迭代方法: for k, v in enumerate(my_request['content']): for k1, v1 in enumerate(v['data']['sc
我正在分析一个 json 文件,我想将嵌套的 json 输入文件转换为 python 中的平面数据框。有没有任何 python 方法可以管理这个?或者我应该创建一个自定义函数来做到这一点?您能提供一个
假设这是我的 JSON: ds = [{ "name": "groupa", "subGroups": [{ "subGroup": 1,
我有一个如下所示的数据框: ID phone_numbers 1 [{u'updated_at': u'2017-12-02 15:29:54', u'created_at'
这个问题在这里已经有了答案: Split / Explode a column of dictionaries into separate columns with pandas (13 个答案)
此问题特定于 pandas.DataFrame 中的数据列 这个问题取决于列中的值是否为 str , dict , 或 list类型。 这个问题解决了如何处理 NaN值,当 df.dropna().r
我正在尝试从嵌套的 json 中创建一个 Pandas 数据框。由于某种原因,我似乎无法解决第三个层次。 我的 json 看起来像这样: "numberOfResults": 376, "re
我有一个带有 LISTS(with dicts) 作为列值的数据框。我的目的是规范整列(所有行)。我找到了标准化单行的方法。但是,我无法对整个数据框或列应用相同的功能。 data = {'COLUMN
我目前正在对这个字典文件进行扁平化处理,遇到了一些障碍。我正在尝试使用 json_normalize 来展平这些数据。如果我对单个实例进行测试,它可以工作,但如果我想展平所有数据,它将返回一个错误,指
我目前正在对这个字典文件进行扁平化处理,遇到了一些障碍。我正在尝试使用 json_normalize 来展平这些数据。如果我对单个实例进行测试,它可以工作,但如果我想展平所有数据,它将返回一个错误,指
我想标准化以下 JSON: [ { "studentId": 1, "studentName": "James", "schools": [
我正在尝试在 Python (Pandas) 中使用 json_normalize 来展平 json 文件,但作为菜鸟,我似乎总是以 KeyError 告终。 我想要实现的是一个包含游戏中所有 Pla
我是一名优秀的程序员,十分优秀!