python - 需要一个“for循环”来从它们各自的api url获取股票投资组合的股息数据
问题描述
我正在尝试自动解析股票投资组合的股息数据,并将股票明智的股息值放入单个数据框表中。
投资组合中每只股票的数据存储在单独的 api url
投资组合 ID(用于股票 - ITC、Britannia、Sanofi)为 [500875, 500825, 500674]。
我首先想运行一个“for循环”来生成/连接每个特定的url(如下所示 - https://api.bseindia.com/BseIndiaAPI/api/CorporateAction/w?scripcode=500674),最后6个url的数字是他们各自的公司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
。
您可以使用字符串格式来创建带有代码的 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]
推荐阅读
- javascript - 仅为 .js 文件禁用 Typescript 的 noImplicitAny?
- python - 将 pandas 数据帧的每个元素转换为 dict
- angular - Electron-Angular 桌面应用程序。截屏时黑屏 2-3 秒
- javascript - moment.js 的 isBetween 方法显示错误
- python - sklearn 是否支持内核回归?
- dbt - dbt 测试可以相互依赖吗?
- docker - 使用带有管理程序的 docker 而不是 wsl2
- c - 如何使用 C 表达式操作数将函数地址传递给汇编程序指令
- azure-devops - 有没有办法将 ECR 映像设置为 Azure Devops 中的构建工件?
- java - 在linux中安装Tn5250j模拟器给出java.lang.NoClassDefFoundError:无法初始化类sun.awt.X11.XToolkit