Python 需要一个';对于循环';从股票组合各自的api URL获取股票组合的股息数据

Python 需要一个';对于循环';从股票组合各自的api URL获取股票组合的股息数据,python,json,pandas,api,dictionary,Python,Json,Pandas,Api,Dictionary,我正在尝试自动解析股票投资组合的股息数据,并将股票股息值放入单个数据框表中 投资组合中每只股票的数据存储在单独的api url中 投资组合ID(用于股票——ITC、不列颠尼亚、赛诺菲)为[500875500825500674] 我想首先运行一个“for循环”来生成/连接每个特定的url(如下所示-),url的最后6位数字是它们各自的公司ID 然后,我想使用该url将各个股息表的第一行放入单个数据帧中。我用来获取单个红利数据的代码,以及我所需要的最终数据帧在所附的图像中表示 基本上,我想运行一个“

我正在尝试自动解析股票投资组合的股息数据,并将股票股息值放入单个数据框表中

投资组合中每只股票的数据存储在单独的api url中

投资组合ID(用于股票——ITC、不列颠尼亚、赛诺菲)为[500875500825500674]

我想首先运行一个“for循环”来生成/连接每个特定的url(如下所示-),url的最后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显示代码以及它给您带来的问题


您可以对所有作品使用单个
循环

您可以使用字符串格式创建带有代码的url,并从服务器读取数据。接下来,您可以获取第一行(即使不创建
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]

如果需要<代码>进行<代码>-循环,则使用它并使用此<代码>进行<代码>-循环显示代码。您可以在一个
中为
循环完成所有操作。无需为
-循环创建分隔的
,以连接URL。