Это мой код:
response = requests.get(url, headers=headers)
print(response)
if response.status_code == 401:
print(url)
else:
bPL= json.loads(response.text)
print(bPL)
print(bPL['Columns']['Column'])
# print(bPL['Rows']['Row'])
columns = [dct['ColTitle'] for dct in bPL['Columns']['Column']]
print(columns)
rows = [dct[0] for dct in bPL['Rows']['Row']['ColData']['value']]
df = pd.DataFrame(bPL['Rows'], columns=columns)
print(df)
это файл json, который я должен был иметь в качестве фрейма данных для панд:
{'Header': {'Time': '2019-11-03T06:59:23-08:00', 'ReportName': 'TrialBalance', 'DateMacro': 'this month-to-date', 'ReportBasis': 'Accrual', 'StartPeriod': '2019-11-01', 'EndPeriod': '2019-11-03', 'Currency': 'CAD', 'Option': [{'Name': 'NoReportData', 'Value': 'false'}]}, 'Columns': {'Column': [{'ColTitle': '', 'ColType': 'Account'}, {'ColTitle': 'Débit', 'ColType': 'Money'}, {'ColTitle': 'Crédit', 'ColType': 'Money'}]}, 'Rows': {'Row': [{'ColData': [{'value': '1050 Carte de credit', 'id': '109'}, {'value': ''}, {'value': '3484.79'}]}, {'ColData': [{'value': '1060 Banque nationale', 'id': '110'}, {'value': '1577.52'}, {'value': ''}]}, {'ColData': [{'value': '1199 dummyAccount (ne pas utiliser)', 'id': '216'}, {'value': '0.00'}, {'value': ''}]}, ....
Мне удалось идентифицировать столбцы с этим кодом:
columns = [dct['ColTitle'] for dct in bPL['Columns']['Column']]
и я получаю: ['', 'Débit', 'Crédit']
Но у меня есть проблема с добавлением строк
Я повторил это, ноэто не работает:
title = [dct[0] for dct in bPL['Rows']['Row']['ColData']['value']]
ошибка: Ошибка типа: индексы списка должны быть целыми числами или кусочками, а не str
Я видел, что для каждой строки у меня есть 3 значения: первое с именем ивторой идентификатор для дебетового столбца трижды один для кредитного столбца
Я хотел бы кадр с (например, с первой строкой):
Имена столбцов: Имя, Идентификатор, Дебет, Кредит
Пример строки: '1050 Carte de credit', '109', '', '3484.79'
Спасибо за помощь