从数据帧列中的字典中提取值

2024-09-27 07:28:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一件很简单的事情:向数据库请求一些东西,这个数据库会给我一个[巨大的]字典。没关系,我喜欢措辞。但我不是Python中这方面的专家。在

我的问题是我想把这本字典转换成一个数据帧。没关系,我在谷歌上搜了一下,就成功了。但是在我的字典里,我有其他的字典(是的,我知道…)。在

我想从那些字典(在我的数据帧中)中获取“value”键的值

这是我试过的样品。提前谢谢。在

[[res是我的大字典,查询的结果]]

回复:

{'head': {'vars': ['id', 'marque', 'modele']},
 'results': {'bindings': [{'id': {'type': 'literal', 'value': '1362'},
    'marque': {'type': 'literal', 'value': 'PEUGEOT'},
    'modele': {'type': 'literal', 'value': '206'}},....

在pd数据帧(res['results']['bindings'],列=res['head']['vars']): enter image description here

如你所见,我的数据框里有另一本字典!我想要的是以一种高效的方式从“value”键中获取值(实际上,我知道如何使用big for语句来实现这一点,但是请不要使用python)。在

我尝试了res['results']['bindings']['values'],或者res['results']['bindings'].values() (or .values),以及其他数据帧上的东西,比如df.values()['value'] = df.values(),但都没用。在


Tags: 数据id数据库字典valuetyperesbindings
2条回答

您可以使用^{}来完美地添加NaNs:

d = {'head': {'vars': ['id', 'marque', 'modele']},
 'results': {'bindings': [{'id': {'type': 'literal', 'value': '1362'},
    'marque': {'type': 'literal', 'value': 'PEUGEOT'},
    'modele': {'type': 'literal', 'value': '206'}},{'id': {'type': 'literal', 'value': '1362'},
    'marque': {'type': 'literal', 'value': 'PEUGEOT'}}]}}

^{pr2}$

IIUC,您可以使用applymap并从每个字典中提取与value键相关联的值。在

import operator

df = pd.DataFrame(res['results']['bindings'], columns=res['head']['vars']) 
df = df.applymap(operator.itemgetter('value'))

这是在假设每个单元格的值是一个字典的前提下进行的。在


您的一些字典可能没有将value作为键。在这种情况下,需要使用dict.get稍作修改:

^{pr2}$

这还将处理x不是dict时出现的潜在问题。在

相关问题 更多 >

    热门问题