从financialmodelingprep api获取指定公司股票的历史收盘价的api get请求。它返回股票的每个记录日期。问题是,我只需要过去5年的最后一个日期,以便与财务报表进行比较。 有人知道如何过滤数据集以获取一年中的最后一个日期,而不指定确切的日期吗?目标是将表格导出为csv格式,并进一步与其他公司合并
有没有更好的方法来获得我需要的结果
symbols = ["MMM",
"ABT",
"ABBV",
"ABMD",
"ACN",
]
import requests
import pandas as pd
import datetime
API_KEY = 'my_key'
api_stock_price_url = "https://financialmodelingprep.com/api/v3/historical-price-full/" + symbols[0] + "?serietype=line&apikey=" + API_KEY
company_stock_price = pd.read_json(api_stock_price_url)
date_and_close = pd.json_normalize(company_stock_price["historical"])
company_stock_price["date"] = date_and_close["date"]
company_stock_price["close"] = date_and_close["close"]
company_stock_price.index = [company_stock_price["date"]]
# CHANGES THE INDEX TO BE THE NORMALIZED DATE
company_stock_price["date"] = pd.to_datetime(company_stock_price["date"])
# CHANGES THE FORMAT TO DATE
del company_stock_price['historical']
del company_stock_price['date']
# deletes the unwanted columns
返回的公司股票价格表
symbol close
date
2020-12-04 MMM 172.460007
2020-12-03 MMM 171.830002
2020-12-02 MMM 171.850006
2020-12-01 MMM 170.520004
2020-11-30 MMM 172.729996
... ... ...
1970-09-14 MMM 0.322600
1970-09-11 MMM 0.321700
1970-09-10 MMM 0.323500
1970-09-09 MMM 0.324000
1970-09-08 MMM 0.318800
12675 rows × 2 columns
我需要的理想输出如下所示:
symbol close
date
2020-12-31 MMM 172.460007
2019-12-31 MMM 131.112123
2018-12-31 MMM 123.123123
2017-12-31 MMM 111.111111
2016-11-31 MMM 101.111111
这件事的问题是,我无法具体说明确切的日期,因为一些s&;p500家公司(我将对其进行循环)在返回的api响应中缺少该日期的股价
这里,数据帧按
date
列的年份分组,然后返回具有每年最大日期的行。然后,您可以按日期对其进行排序,并获得最后五行:您可以获取最近的日期并使用
.loc()
获取所需的行,如下所示:您可以使用名为iloc的函数。此函数给出pd数据帧的特定行数。因此,您可以像列表一样从中获取信息,例如:pandas.iloc[-1]
这是一个如何工作的示例:
输出最后一行:
使用pd.iloc[0]输出第一行:
现在,如果您希望每5年获取一次最后一次日期,您可以在阵列上循环并获取数据范围。在这种情况下,5年的范围。所以应该是这样的:
相关问题 更多 >
编程相关推荐