【发布时间】:2021-08-24 20:18:02
【问题描述】:
Jupyter 笔记本。批处理 API 调用返回一个 JSON 对象数组。解析需要 for 循环(奇怪)。我需要将某些 JSON 对象信息附加到 Pandas DataFrame 中。
import numpy as np
import pandas as pd
import xlsxwriter
import requests
from scipy import stats
from pandas_datareader import data
import math
import json
symbol = 'AAPL'
# api_url = f'https://financialmodelingprep.com/api/v3/ratios-ttm/{symbol}?apikey={blah}'
response = requests.get(f'https://financialmodelingprep.com/api/v3/ratios-ttm/{symbol}?apikey={blah}')
# data = requests.get(api_url).json()
data = requests.get(f'https://financialmodelingprep.com/api/v3/ratios-ttm/{symbol}?apikey={blah}').json()
# data = json.loads(response.text)
data
这会输出 AAPL 的股票数据。以:
开头的对象数组[{'dividendYielTTM': 4, ...'peRatioTTM': 5, ...'priceToBookRatioTTM': 6, ...'priceToSalesRatioTTM': 7 ...}]
显然,这些值是假的。 Anyhoo,要解析和打印它,我必须使用 for 循环。诡异的。但我的代码有效。接下来,我制作了一个 Pandas 数据框。我只想解析 JSON 数组中的对象信息,然后附加它。我构建的数据框的名称是 final_dataframe。
my_columns = [ 'Ticker', 'Price', 'Market Capitalization', 'PE_ttm', 'PE_%', 'PB_ttm', 'PB_%', 'PS_ttm', 'PS_%', 'EV/GP', 'EV/GP_%', 'EV/EBITDA', 'EV/EBITDA_%', 'RV']
final_dataframe = pd.DataFrame(columns = my_columns)
final_dataframe
我尝试解析和追加使用 for 循环。我的 for 循环正在工作(也就是说,它没有给我错误)。但是 Dataframe 没有附加解析的信息。
for i in data:
final_dataframe.append(
pd.Series(
[
symbol,
'N/A',
'N/A',
i['peRatioTTM'],
'N/A',
i['priceToBookRatioTTM'],
'N/A',
i['priceToSalesRatioTTM'],
'N/A',
'N/A',
'N/A',
'N/A',
'N/A',
'N/A',
],
index = my_columns),
ignore_index=True
)
final_dataframe
请帮忙。任何人。我会提供啤酒和披萨。我确定我已经安装并更新了所有 Python / Pandas / Numpy 包。
【问题讨论】:
-
在循环之前声明一个列表,将那些循环的数据帧附加到一个列表中,然后在循环结束后使用
pd.concat(that_list)。 -
"将其他行追加到调用者的末尾,返回一个新对象。" --pandas.DataFrame.append。请参阅下面@crayxt 的答案
标签: python json pandas dataframe parsing