У нас есть следующий фрейм данных:
import pandas as pd
import numpy as np
import json
from json import JSONDecodeError
json_as_str_list = [
"[{'key1': 312, 'name': 'Simple name'}]",
"[{'key1': 981, 'name': 'Name n' quote'}]",
np.nan
]
d = {'json_as_str': json_as_str_list}
df = pd.DataFrame(data=d)
json_as_str
0 [{'key1': 312, 'name': 'Simple name'}]
1 [{'key1': 981, 'name': 'Name n' quote'}]
2 NaN
После столбца импорта json_as_str
есть список строк, но я хочу, чтобы он был списком объектов JSON.Я написал функцию, которая должна возвращать список пустых объектов JSON с заданной строкой или пустой список с заданным np.nan
:
def convert_to_JSON_helper(json_str):
if isinstance(json_str, str):
json_str = json_str.replace("'", '"')
try:
return json.loads(json_str)
except JSONDecodeError:
print(json_str)
return []
else:
return []
Текущая реализация не обрабатывает строковые одинарные кавычки (какво втором ряду данных).Как мне изменить функцию так, чтобы она работала так, как ожидалось?
Текущий вывод, который я получаю при использовании df['json_as_str'].apply(convert_to_JSON_helper)
:
0 [{'key1': 312, 'name': 'Simple name'}]
1 []
2 []
Name: json_as_str, dtype: object
Вывод, который я хотел бы получить:
0 [{'key1': 312, 'name': 'Simple name'}]
1 [{'key1': 981, 'name': 'Name n' quote'}]
2 []
Name: json_as_str, dtype: object