需要一个“for循环”来从它们各自的api url获取股票投资组合的股息数据
Posted
技术标签:
【中文标题】需要一个“for循环”来从它们各自的api url获取股票投资组合的股息数据【英文标题】:Need a 'for loop' to get dividend data for a stock portfolio, from their respective api urls 【发布时间】:2021-01-04 02:51:30 【问题描述】:我正在尝试自动解析股票投资组合的股息数据,并将股票明智的股息值放入单个数据框表中。
投资组合中每只股票的数据存储在单独的 api url 中
投资组合 ID(对于股票 - ITC、Britannia、Sanofi)为 [500875、500825、500674]。
我首先想运行一个“for循环”来生成/连接每个特定的网址(如下所示 - https://api.bseindia.com/BseIndiaAPI/api/CorporateAction/w?scripcode=500674),网址的最后 6 位数字是它们各自的公司 ID
然后我想使用该 url 将每个相应的股息表的第一行放入一个数据帧中。我用来获取个人股息数据的代码,以及我需要的最终数据帧在附图中表示
基本上我想运行一个“for循环”来获取每个股票ID的第一行“Table2”并将其存储在一个数据框中作为最终结果。
PS - 我用来获取个人股息数据的代码如下突出显示:
url = 'https://api.bseindia.com/BseIndiaAPI/api/CorporateAction/w?scripcode=500674'
jsondata = requests.get(url, headers= 'User-Agent': 'Mozilla/5.0').json()
df = pd.DataFrame(jsondata['Table2'])
【问题讨论】:
如果您需要for
-loop,然后使用它并使用此for
-loop 显示代码。你可以在一个for
-loop 中完成所有工作。无需创建单独的for
-loop 来连接网址。
【参考方案1】:
如果您需要for
-loop,那么您应该使用它并显示带有for
-loop 的代码以及它给您带来的问题。
您可以对所有作品使用单个 for
-loop。
您可以使用字符串格式来创建带有代码的 url 并从服务器读取数据。接下来,您可以获得第一行(即使没有创建DataFrame
)并附加到所有行的列表。在循环之后,您可以将此列表转换为DataFrame
import requests
import pandas as pd
# --- before loop ---
headers = 'User-Agent': 'Mozilla/5.0'
all_rows = []
# --- loop ---
for code in [500875, 500825, 500674]:
# use `f-string` of string `.format()` to create url
#url = f'https://api.bseindia.com/BseIndiaAPI/api/CorporateAction/w?scripcode=code'
url = 'https://api.bseindia.com/BseIndiaAPI/api/CorporateAction/w?scripcode='.format(code)
r = requests.get(url, headers=headers)
#print(r.text) # to check error message
#print(r.status_code)
data = r.json()
first_row = data['Table2'][0] # no need to use DataFrame
#df = pd.DataFrame(data['Table2'])
#first_row = df.iloc[0]
#print(first_row)
all_rows.append(first_row)
# --- after loop ---
df_result = pd.DataFrame(all_rows)
print(df_result)
结果:
scrip_code sLongName ... Details PAYMENT_DATE
0 500875 ITC LTD. ... 10.1500 2020-09-08T00:00:00
1 500825 BRITANNIA INDUSTRIES LTD. ... 83.0000 2020-09-16T00:00:00
2 500674 Sanofi India Ltd ... 106.0000 2020-08-06T00:00:00
[3 rows x 9 columns]
【讨论】:
以上是关于需要一个“for循环”来从它们各自的api url获取股票投资组合的股息数据的主要内容,如果未能解决你的问题,请参考以下文章
for()与iterator()遍历循环的区别,各自的特点?
对具有相同结构的几个数据集使用lapply并可能进行for循环以提取和计算每个数据帧的值
Python:利用for循环比较两个列表元素的异同进而找出共有元素各自不同元素并全部导出到csv文件实现代码