使用范围和所讨论的年份从for循环中命名dataframe

2024-06-25 22:41:07 发布

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

我试图从一个网站上获取一些数据,这些数据包括每年一个Excel文件(从2015年到2021年)。我觉得我差不多完成了,但缺少的是能够将每个年度结果保存到一个单独的数据框中,并使用一个不同的名称(以年份作为后缀)。这可能有一个简单的解决方案,也可能有其他解决方案,但我尝试的是扭曲代码中的最后一行和数据帧(df_long=…),不命名为df_long,而是df_long_2015,df_long_2016…等等,因为它通过for循环。想把所有的岁月都结束。现在的问题是,对于每年的每个循环,df_long数据帧都会被覆盖,从而失去上一年的结果。谢谢你的帮助…谢谢

for aar in range(2015,2021+1):
    print(aar)
    url = f'https://www.nordpoolgroup.com/48c8e5/globalassets/marketdata-excel-files/elspot-prices_{aar}_daily_nok.xls'
    liste = pd.read_html(url, parse_dates=True, decimal=',', thousands='.', header=2, index_col=0, encoding='UTF-8')
    
    df = pd.DataFrame(liste[0])
    df.index = pd.to_datetime(df.index, format = '%Y-%m-%d')
    
    df_long = df.stack().to_frame()
    df_long.reset_index(inplace=True)
    df_long.columns = ['Dato','Område','Pris']
    
    filt = df_long['Område'].isin(['Oslo','Bergen','Tr.heim','Tromsø','Kr.sand','Molde'])
    df_long = df_long.loc[filt, :]

Tags: to数据trueurldfforindexde
2条回答

创建一个空字典,将每个数据帧添加到字典中,名称(例如df_long_2015)作为键,数据帧作为值

这样行吗

df_list = []
for aar in range(2015,2021+1):
    print(aar)
    url = f'https://www.nordpoolgroup.com/48c8e5/globalassets/marketdata-excel-files/elspot-prices_{aar}_daily_nok.xls'
    liste = pd.read_html(url, parse_dates=True, decimal=',', thousands='.', header=2, index_col=0, encoding='UTF-8')
    
    df = pd.DataFrame(liste[0])
    df.index = pd.to_datetime(df.index, format = '%Y-%m-%d')
    
    df_long = df.stack().to_frame()
    df_long.reset_index(inplace=True)
    df_long.columns = ['Dato','Område','Pris']
    
    filt = df_long['Område'].isin(['Oslo','Bergen','Tr.heim','Tromsø','Kr.sand','Molde'])
    df_long = df_long.loc[filt, :]

    df_long['aar'] = aar
    df_list.append(df_long)

final_df = pd.concat(df_list)

相关问题 更多 >