首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python: Pandas Dataframe中的提取列表-字典列

Python: Pandas Dataframe中的提取列表-字典列
EN

Stack Overflow用户
提问于 2022-02-21 14:53:03
回答 1查看 65关注 0票数 0

我从一个API调用中获得了一个数据,并希望在"_embedded_results“列中提取字典。dataframe看起来如下:

代码语言:javascript
复制
    BC_id                                _embedded.results
0   6EAE8B27FCC11ED892E91CE972E580CC    [{'className': 'Skill', 'classId': 'http://dat...
1   7EAE8B27FCC11ED892E91CE972E580CC    [{'className': 'Skill', 'classId': 'http://dat...
2   8EAE8B27FCC11ED892E91CE972E580CC    [{'className': 'Skill', 'classId': 'http://dat...
3   9EAE8B27FCC11ED892E91CE972ED00CC    [{'className': 'Skill', 'classId': 'http://dat...
4   0EAE8B27FCC11ED892E91CE972ED00CC    [{'className': 'Skill', 'classId': 'http://dat..

"_embedded_results“列(例如,位置0)详细如下所示。对于每一行,都有一个包含5个不同字典的列表:

代码语言:javascript
复制
[{'className': 'Skill',
  'classId': 'http://data.europa.eu/esco/model#Skill',
  'uri': 'http://data.europa.eu/esco/skill/237db40b-4600-47c0-837f-4a2c4f3014ab',
  'searchHit': 'range of project control principles',
  'title': 'project management principles'},
 {'className': 'Skill',
  'classId': 'http://data.europa.eu/esco/model#Skill',
  'uri': 'http://data.europa.eu/esco/skill/abb9c7f1-6d69-4feb-913e-6e577d426ea4',
  'searchHit': 'Operate projection equipment manually or with a control panel.',
  'title': 'operate projector'},
 ...}]

现在,我想提取"_embedded_results“的"title”值,并将其附加为额外的列。例如,在第一个条目中如下所示:

代码语言:javascript
复制
    BC_id                                _embedded.results                                Title1                             Title2                  ...
0   6EAE8B27FCC11ED892E91CE972E580CC    [{'className': 'Skill', 'classId': 'http://dat...   project management principles   operate projector
1   7EAE8B27FCC11ED892E91CE972E580CC    [{'className': 'Skill', 'classId': 'http://dat...
2   8EAE8B27FCC11ED892E91CE972E580CC    [{'className': 'Skill', 'classId': 'http://dat...
3   9EAE8B27FCC11ED892E91CE972ED00CC    [{'className': 'Skill', 'classId': 'http://dat...
4   0EAE8B27FCC11ED892E91CE972ED00CC    [{'className': 'Skill', 'classId': 'http://dat..

另一个选项是创建一个列" title“,并为每个标题追加一行。

我尝试过这样做,以提取每一行的标题,但我不知道如何再次将其放入dataframe中:

代码语言:javascript
复制
my_list = [[x['title'] for x in list_dict] for list_dict in my_df1['_embedded.results']]


my_list[0:2]
[['project management principles',
  'operate projector',
  'manage railway construction projects',
  'prepare financial projections',
  'Prince2 project management'],
 ['project management principles',
  'operate projector',
  'manage railway construction projects',
  'prepare financial projections',
  'Prince2 project management']]

有人知道怎么解决这个问题吗?提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2022-02-21 15:04:56

,但我不知道如何再一次将它放入dataframe:

只需将[[x['title'] for x in list_dict] for list_dict in my_df1['_embedded.results']]分配给新列而不是变量,请考虑下面的简单示例

代码语言:javascript
复制
import pandas as pd
df = pd.DataFrame({"data":[[1,2,3],[4,5,6],[7,8,9]]})
df["cubes"] = [[j**2 for j in i] for i in df['data']]
print(df)

输出

代码语言:javascript
复制
        data         cubes
0  [1, 2, 3]     [1, 4, 9]
1  [4, 5, 6]  [16, 25, 36]
2  [7, 8, 9]  [49, 64, 81]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71208366

复制
相关文章

相似问题

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