Самый быстрый способ импортировать форматированную строку JSON в numpy.recarray? - PullRequest
0 голосов
/ 03 октября 2019

Рассмотрим эту строку в формате JSON:

json_string = '{"SYM": ["this_string","this_string","this_string"],"DATE": ["NaN","NaN","NaN"],"YEST": ["NaN","NaN","NaN"],"other_DATE": ["NaN","NaN","NaN"],"SIZE": ["NaN","NaN","NaN"],"ACTIVITY": ["2019-09-27 14:18:28.000700 UTC","2019-09-27 14:18:28.000700 UTC","2019-09-27 14:18:28.000600 UTC"]}'

Я могу импортировать ее в numpy.recarray, выполнив эти операции:

result      = ast.literal_eval(json_string)
names       = list(result.keys())
formats     = ['O'] * len(names)
dtype       = dict(names = names, formats=formats)
array       = numpy.array(result.items(), dtype=dtype)

Кажется, это многохмель. Есть ли более быстрый способ?

1 Ответ

2 голосов
/ 03 октября 2019

Вам не нужны второй и третий этапы, и вы можете сконденсировать первый и последний в одной строке:

array = numpy.array(ast.literal_eval(json_string).items(), dtype=dtype)

Тем не менее, я бы использовал модуль json вместоast.literal_eval, поскольку literal_eval не будет работать для допустимого JSON, например {"FOO": [null, NaN]}.

import json
numpy.array(json.loads(json_string).items(), dtype=dtype)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...