мой код
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, который я должен был иметь в качестве фрейма данных pandas:
{'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']
Но у меня есть проблема с добавлением строк
Я повторил это, но это не такwork:
title = [dct[0] for dct in bPL['Rows']['Row']['ColData']['value']]
error: TypeError: индексы списка должны быть целыми или кусочками, а не str
Я видел, что для каждой строки у меня есть 3 значения: первое с именем и идентификатором, второеодин для дебетового столбца трижды один для кредитного столбца
Я хотел бы кадр с (в качестве первой строки в качестве примера):
Имена столбцов: Имя, Идентификатор, Дебет, Кредит
Пример строки: «1050 Carte de credit», «109», «», «3484,79»
Спасибо за помощь