【发布时间】:2020-07-28 07:05:00
【问题描述】:
我有一个结构如下 [1] 的 Json 文件,您可以看到多个关键字附加到一篇报纸文章。我想将 Json 规范化为这样的结构(DataFrame)[2]。我已经用 json_normalize 尝试过,但没有按预期工作,还做了一些多索引,但我无法将结果保存为 csv 格式,这使一切变得更加复杂。我想要的是获取结构中的数据以对其进行分析并根据提取的关键字将整篇文章标记为正面或负面。
[2]
╔═══════════════╦════════════╦═══════════════╗
║ url ║ date ║ entities.name ║
║ http://ww.... ║ 2018-12-31 ║ 2018 ║
║ --------------║------------║ Bill Cosby ║
║ ║ ║ Actress ║
║ ║ ║ ... ║
╚═══════════════╩════════════╩═══════════════╝
[1]
{'lang': 'ENGLISH',
'date': '2018-12-31T23:46:18Z',
'url': 'http://www.newschannel6now.com/2018/12/31/cosby-kanye-box-office-diversity-biggest-entertainment-stories/',
'entities': [{'avgSalience': 1,
'wikipediaEntry': '2018',
'type': 'DATE',
'numMentions': 4,
'name': '2018',
'nameNorm': '2018'},
{'wikipediaEntry': 'Actor',
'type': 'COMMON',
'numMentions': 4,
'avgSalience': 0.72,
'nameNorm': 'actres',
'name': 'Actress'},
{'wikipediaEntry': 'Bill Cosby',
'type': 'PROPER',
'numMentions': 2,
'avgSalience': 0.57,
'nameNorm': 'bill cosby',
'name': 'Bill Cosby'},
{'name': 'music superstar',
'nameNorm': 'music superstar',
'avgSalience': 0.02,
'type': 'COMMON',
'numMentions': 1}]}
编辑
我通过使用 group by 并将值加入一列进行管理:
df.groupby(['url','date'], as_index=False).agg({
'name': lambda x: ', '.join(x),
'numMentions': lambda x: ', '.join(map(str,x)),
'avgSalience':lambda x: ', '.join(map(str,x))
})
【问题讨论】:
-
@sammywemmy 看到 [2] 这是我预期的 DataFrame 输出