webjobs json данные в фрейм данных pandas

#python #json #pandas

#python #json #панды

Вопрос:

Я пытаюсь прочитать данные Azure webjobs services json для журналов с помощью REST API, я могу получить данные в фрейме данных со столбцами, но мне нужны данные последнего столбца (одного из столбцов), которые должны быть доступны в табличном формате, где данные доступны в формате ключ: значение, как показано на рисунке ниже

Пример:

 latest_run
0,"{'id': '202011160826295419', 'name': '202011160826295419','job_name': 'failjob','}"
1,"{'id': '202011160826295419', 'name': '202011160826295419','job_name': 'passjob','}"
 

теперь я хочу отобразить все id, job_name в формате фрейма данных, любая помощь, пожалуйста, заранее спасибо

Ниже приведен мой код

 data = response.json()
# print(data)
df = pd.read_json(json.dumps(data), orient='records')
# df = json.loads(json.dumps(data))

df = pd.DataFrame(df)
df = df["latest_run"]
df.to_csv('file1.csv')
print(df)
 

Данные:

введите описание изображения здесь

Ответ №1:

Перво-наперво, ваш JSON неправильно отформатирован (это неправильный JSON). В конце есть дополнительная открывающая кавычка, и JSON должен иметь двойные кавычки повсюду. Притворяясь, что это правильный JSON на данный момент, вот как вы могли бы его загрузить:

 # NOTE: You can also open a CSV file directly
import io
csv_content = """latest_run
0,"{'id': '202011160826295419', 'name': '202011160826295419','job_name': 'failjob'}"
1,"{'id': '202011160826295419', 'name': '202011160826295419','job_name': 'passjob'}"
"""
csv_file = io.StringIO(csv_content)


import csv
import json
import pandas

# Create a CSV reader (this can also be a file using 'open("myfile.csv", "r")' )
reader = csv.reader(csv_file, delimiter=",")

# Skip the first line (header)
next(reader)

# Load the rest of the data
data = [row for row in reader]

# Create a dataframe, loading the JSON as it goes in
df = pandas.DataFrame([json.loads(row[1].replace("'", """)) for row in data], index=[int(row[0]) for row in data])
 

Комментарии:

1. @shaik, нет проблем! Пожалуйста, примите ответ, если это то, что вы ищете. Это также помогает другим находить ответы, которые им нужны.