首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将嵌套字典的值映射到python的dataframe中的新列

将嵌套字典的值映射到python的dataframe中的新列
EN

Stack Overflow用户
提问于 2022-02-26 22:33:20
回答 1查看 541关注 0票数 0

对于DataFrame中的每一行,我都有以下嵌套字典。

代码语言:javascript
复制
dictionary
{'https://twitter.com/tonythehuff/status/927186407789137920/photo/1': {'malicious': False}}
{'http://giveaway.amazon.com\\__CONNECTIONPOOL_ERROR__': {'malicious': False}}
{'http://pcktpro.com\\__CONNECTIONPOOL_ERROR__': {'malicious': True}}

我想通过映射嵌套字典的值来创建一个新列。名为“恶意”的新列中的行如下所示

代码语言:javascript
复制
malicious
False
False
True

是否有任何有效的方法来获得上述嵌套字典的值?

数据:

代码语言:javascript
复制
{'dictionary': [
    {'https://twitter.com/tonythehuff/status/927186407789137920/photo/1': {'malicious': False}},
    {'http://giveaway.amazon.com\\__CONNECTIONPOOL_ERROR__': {'malicious': False}},
    {'http://pcktpro.com\\__CONNECTIONPOOL_ERROR__': {'malicious': True}}]}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-27 01:11:37

看起来,使用双循环的列表理解应该完成以下工作:

代码语言:javascript
复制
df['malicious'] = [d.get('malicious') for outer_d in df['dictionary'] for d in outer_d.values()]

或者,您可以尝试以下代码,从“字典”列中创建一个DataFrame,并使用str.get获取“恶意”键下的值

代码语言:javascript
复制
df['malicious'] = (pd.DataFrame(df['dictionary'].tolist()).set_axis([0]*len(df), axis=1)
                   .groupby(level=0, axis=1)
                   .first()[0]
                   .str.get('malicious'))

输出:

代码语言:javascript
复制
                                          dictionary  malicious
0  {'https://twitter.com/tonythehuff/status/92718...      False
1  {'http://giveaway.amazon.com\__CONNECTIONPOOL_...      False
2  {'http://pcktpro.com\__CONNECTIONPOOL_ERROR__'...       True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71280778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档