使用for循环创建多个数据帧?

2024-05-10 15:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从所有符号的所有信息中分别生成dataframes。i、 例如df_ACCdf_SBIN等等。将这些dataframes分别写入excel,并根据所使用的符号来命名这些页。在

从下面的代码生成的文件只是得到最后一个dataframe,即JUSTDIAL。虽然我找不到dataframes除了最后一个也是由df_name而不是{}的,这是我的意图。在

start_time = time.time()
#The solution to second problem I listed
path = r"C:\Users\xxx\OneDrive\Data\Fut Data"
opt_fut_excel_file = r'\fo_data_' + str(datetime.date.today()) + ".xlsx"
f_path = path+opt_fut_excel_file
writer = pd.ExcelWriter(f_path, engine='xlsxwriter')
fut_data.to_excel(writer,sheet_name='futures', index=False)
#Please add writer.save() at the point where writing to excel is finished.
symbols = ['ACC','SBIN','PNB','JUSTDIAL']
for symbol in symbols:
    print(symbol)
    opt_url1 = 'https://www.nseindia.com/marketinfo/companyTracker/mtOptionKeys.jsp?companySymbol='
    opt_url3 = '&indexSymbol=NIFTY&series=EQ&instrument=OPTSTK&date=-'
    url = opt_url1 + symbol + opt_url3
    raw_page = requests.get(url).text
    soup = bs(raw_page, "lxml")
    if len(raw_page) > 0:
        print(symbol + str(len(raw_page)))
        table = soup.findAll('table')[1]
        test_tab = []
        for row in table.findAll('tr'):
             test_tab.append(([tr.text for tr in row.findAll('td')]))
             # print(len(test_tab))
        try:
            del test_tab[0]
            del test_tab[0]
            del test_tab[0]
            del test_tab[0]
            del test_tab[0]
            del test_tab[0]
            del test_tab[0]
            del test_tab[0]
            del test_tab[0]
            column_names = test_tab[0]
            del test_tab[0]
            # df_name = 'df_' + symbol
            # print(df_name)
            # df_name = pd.DataFrame(test_tab,columns=column_names)
            # opt_fut_excel_file = 'fo_data_' + str(datetime.date.today()) + ".xlsx"
            # df_name.to_excel(opt_fut_excel_file, sheet_name=symbol)
        except:
            print("There was an exception in list del with symbol " + symbol)
             pass
        df_name = 'df_' + symbol
        print(df_name)
        df_name = pd.DataFrame(test_tab, columns=column_names)
        #print(df_name)
        #opt_fut_excel_file = 'fo_data_' + str(datetime.date.today()) + ".xlsx"
        df_name.to_excel(writer, sheet_name=symbol)
    raw_page = 0
#Solution to second problem, this line needs to be there for the file to be saved
writer.save()
print("--- %s seconds ---" % (time.time() - start_time))

----我认为这个问题不是重复的,因为--

这个双重问题如下:

1-为什么上面的代码没有生成多个具有不同名称的dataframes?在

2-已解决-为什么在生成最后一张图纸时没有创建图纸?@JonClements的评论让我找到了答案。我已经更新了问题和代码以反映相同的情况。在


Tags: tonametestdfrawtimesymbolexcel