Проблемы с очисткой данных из JSON в Python - PullRequest
1 голос
/ 28 мая 2020

Я только начал изучать python недавно, и у меня нет опыта работы с JSON файлами.

Когда я импортирую свой JSON файл, кажется, что весь словарь элементов находится в одном столбце ? Я пытался разделить его, но, похоже, это не сработало. Вот скриншот того, как данные выглядят , , но так выглядят исходные данные.

Я пробовал np.split, но там TypeError: cannot do slice indexing on <class 'pandas.core.indexes.range.RangeIndex'> with these indexers [,] of 'class 'str'

Я также пробовал

MRT = pd.read_json('mrt_stations.json') MRT_Stations = MRT['Possible Locations'].map(str).apply(json.loads) MRT_Stations['Address'] = jsonO.apply(lambda x: x['Address'])

, как я видел это на Python2. 7: Как разбить столбец на несколько столбцов на основе специальных строк, подобных этой ?

Однако он возвращает JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 3 (char 2)

Буду признателен за помощь и заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Добро пожаловать в Stackoverflow! Выдает ли это ошибку при чтении файла?

import json
import pd

with open('mrt_stations.json') as json_file:
  mrt_json = json.load(json_file)

mrt_df = pd.DataFrame(data=mrt_json)
print(mrt_df)

mrt_stations = mrt_df['Possible Locations']
mrt_stations['Address'] = mrt_stations.apply(lambda x: x['Address'])
0 голосов
/ 28 мая 2020

Похоже, что столбец Possible Locations содержит python dict объектов. Не json строк. Вы получаете JSONDecodeError с выполнением MRT['Possible Locations'].map(str).apply(json.loads), потому что вы пытаетесь json декодировать строку dict, поэтому вы получаете сообщение об ошибке одинарных и двойных кавычек (JSON использует двойные кавычки, * 1017 Объекты * dict представляют строки как ' или ")

Учитывая вышеизложенное, вы должны иметь возможность анализировать столбец Possible Locations через

MRT_Stations = MRT['Possible Locations']
MRT_Stations['Address'] = MRT_Stations.apply(lambda x: x['Address'])
...