#python #json #pandas #dataframe #data-analysis
#python #json #pandas #dataframe #анализ данных
Вопрос:
В настоящее время я пытаюсь визуализировать файл json на python. Я должен получить значения «длительность» и «расстояние» внутри объекта «match_result».
Хотя это файл json, я могу получить к ним доступ, написав эти коды на python: print(matches[0]["match_result"]["matchings"][0]["legs"][0]["duration"])
и print(matches[0]["match_result"]["matchings"][0]["legs"][0]["distance"])
Но поскольку я не мог писать циклы for для визуализации и поскольку мне удобнее работать с csv-файлом, я преобразовал его в csv. И теперь это выглядит так:
Я пытался связаться с ними, написав data.match_result[1268].matchings[0]
или data.match_result[1268]["matchings"][0]
, но, конечно, они не сработали.
Итак, мой вопрос в том, как я могу получить эти значения в фрейме данных и как я могу переместить их в новый столбец?
Комментарии:
1. Вы должны преобразовать json в объект.
obj = json.loads(data.match_result[1268])
;obj["matchings"][0]["legs"]
.2. Я получаю эту ошибку: ожидаемое имя свойства, заключенное в двойные кавычки: строка 1, столбец 2 (символ 1). Когда я пишу
obj = json.loads(data.match_result[1268])
Ответ №1:
Это работает:
In [28]: df = pd.DataFrame([{'driver': 'john', 'test': {'car': [{'brand': 'ford', 'condition': 'beater'}, {'brand': 'chev', 'condition': 'new'}]}}])
In [29]: df.test.iloc[0]['car']
Out[29]:
[{'brand': 'ford', 'condition': 'beater'},
{'brand': 'chev', 'condition': 'new'}]
In [30]: df.test.iloc[0]['car'][0]
Out[30]: {'brand': 'ford', 'condition': 'beater'}
Короче говоря, попробуйте:
data.match_result.iloc[1268].matchings[0]
Комментарии:
1. Я получаю эту ошибку: объект ‘str’ не имеет атрибута ‘matchings’, когда я пишу
data.match_result.iloc[1268].matchings[0]
также пытался, когда вы пишете в своем ответе так:data.match_result.iloc[1268]['matchings'][0]
но на этот раз получаю эту ошибку: строковые индексы должны быть целыми числами2. Какой тип, по мнению pandas, match_results
3. Исходя из таблицы, это строка — запись JSON. Вам нужно будет передать data.match_result.iloc[1268] в json.loads, а затем манипулировать этим объектом.
4. Как я упоминал ранее, я получаю эту ошибку: ожидаемое имя свойства, заключенное в двойные кавычки: строка 1, столбец 2 (символ 1). Когда я пишу« obj = json.loads(data.match_result[1268])«