У меня есть следующий JSON -File
{"Global Quote": {"01. symbol": "MSFT", "02. open": "194.0000", "03. high": "196.4900", "04. low":
"194.0000", "05. price": "196.3200", "06. volume": "22966814", "07. latest trading day": "2020-06-
18", "08. previous close": "194.2400", "09. change": "2.0800", "10. change percent": "1.0708%"}}
В моем dict есть другой dict, поэтому я делаю следующее:
f = open('data.json',)
meta = json.load(f)
data = meta['Global Quote']
Результаты следующие:
{"01. symbol": "MSFT", "02. open": "194.0000", "03. high": "196.4900", "04. low": "194.0000", "05. price": "196.3200", "06. volume": "22966814", "07. latest trading day": "2020-06-18", "08. previous close": "194.2400", "09. change": "2.0800", "10. change percent": "1.0708%"}
Прямое преобразование в CSV, к сожалению, невозможно, потому что отображается следующая ошибка:
df = pd.read_json('data.json')
df.to_csv('datatest.csv', encoding='utf-8-sig')
ValueError: If using all scalar values, you must pass an index
Но если я попытаюсь манипулировать им с помощью фреймов данных, я получаю следующую ошибку :
response = requests.request("GET", url, headers=headers, params=querystring)
info = response.json()
with open('data.json', 'w') as fp:
json.dump(info, fp)
f = open('data.json',)
meta = json.load(f)
data = meta['Global Quote']
df=pd.DataFrame(columns=['symbol','open','high','low','price','volume','latest trading day','previous close','change','change percent'])
for d,p in data.items():
data_row = [float(p['1. symbol']),float(p['2. open']),float(p['3. high']),float(p['4. low']),float(p['5. price']),int(p['6. volume']),float(p['7. latest trading day']),int(p['8. previous close']),float(p['9. change']),int(p['10. change percent'])]
df =df.sort_values('symbol')
print(df)
df.to_csv('testfile.csv')
TypeError: string indices must be integers
Есть ли лучший способ записать файл в CSV? Большое спасибо