У меня есть файл Json, который структурирован, как показано ниже [1], так как вы можете видеть несколько ключевых слов, прикрепленных к одной газетной статье. Я хочу нормализовать 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}]}
РЕДАКТИРОВАТЬ
Мне удалось с помощью группы и объединяя значения в один столбец:
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))
})