首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas列有一个包含json对象的np数组

Pandas列有一个包含json对象的np数组
EN

Stack Overflow用户
提问于 2021-07-07 01:11:57
回答 1查看 52关注 0票数 1

我有一个熊猫数据框,它的形状如下。

如您所见,列实体有一个由JSON对象组成的np数组,有时,它是空的。我想通过获取前5个JSON对象将此列展平到数据框中。每个JSON对象都有索引(name、type、mid、wikipediaUrl、numMentions、avgSalience),但是每行中的对象数量从non到30或40不等。这是一个最小的可重复性样本。

代码语言:javascript
复制
import json 
dict0 = [{'name': 'require-once', 'type': 'OTHER', 'mid': None, 'wikipediaUrl': None, 'numMentions': 4, 'avgSalience': 0.014624}, {'name': 'require_once', 'type': 'OTHER', 'mid': None, 'wikipediaUrl': None, 'numMentions': 4, 'avgSalience': 0.008366},{'name': 'funkytaurusmedia.com/includes/header.php', 'type': 'UNKNOWN', 'mid': '/m/02dnj_', 'wikipediaUrl': 'https://en.wikipedia.org/wiki/Header_(computing)', 'numMentions': 2, 'avgSalience': 0.007887},{'name': 'public_html', 'type': 'UNKNOWN', 'mid': '/m/03g20', 'wikipediaUrl': 'https://en.wikipedia.org/wiki/HTML', 'numMentions': 28, 'avgSalience': 0.007139}, {'name': 'public_html', 'type': 'PERSON', 'mid': None, 'wikipediaUrl': None, 'numMentions': 1, 'avgSalience': 0.007139}]
dict1 = [{'name': 'require-once1', 'type': 'OTHER', 'mid': None, 'wikipediaUrl': None, 'numMentions': 4, 'avgSalience': 0.014624}, {'name': 'require_once', 'type': 'OTHER', 'mid': None, 'wikipediaUrl': None, 'numMentions': 4, 'avgSalience': 0.008366},{'name': 'funkytaurusmedia.com/includes/header.php', 'type': 'UNKNOWN', 'mid': '/m/02dnj_', 'wikipediaUrl': 'https://en.wikipedia.org/wiki/Header_(computing)', 'numMentions': 2, 'avgSalience': 0.007887},{'name': 'public_html', 'type': 'UNKNOWN', 'mid': '/m/03g20', 'wikipediaUrl': 'https://en.wikipedia.org/wiki/HTML', 'numMentions': 28, 'avgSalience': 0.007139}]
df = pd.DataFrame({"date":{0:1522254600000, 1:1132254600000 },"url":{0:"http", 1:"http1"},"lang":{0:"de", 1:"de"},"polarity":{0:-0.8, 1:0.8},"magnitude":{0:10.3, 1:11},"score":{0:-0.5, 1:0.5},"entities": {0:dict0, 1:dict1}})
df

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-07 03:03:52

您可以读取列元素,并从中创建一个新的数据帧,然后将它们连接在一起:

代码语言:javascript
复制
df.join(pd.DataFrame(df['entities'].tolist()))

            date   url  ... numMentions  avgSalience
0  1522254600000  http  ...           4     0.014624
1  1522254600000  http  ...           4     0.008366
2  1522254600000  http  ...           2     0.007887
3  1522254600000  http  ...          28     0.007139
4  1522254600000  http  ...           1     0.007139
[5 rows x 13 columns]

对于您的第二个示例,您可以尝试这样做:

代码语言:javascript
复制
pd.concat(df.apply(lambda row: pd.DataFrame(row['entities'], [row['date']]*len(row['entities'])), axis=1).values)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68274802

复制
相关文章

相似问题

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