添加数据帧时遇到困难

2024-06-26 00:17:10 发布

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

我期待着通过一个从web中提取一系列数据的循环来附加各种数据帧。函数ratios_funda本身工作正常,但是我没有找到方法根据不同的标记循环它,并在空的dataframe中一个接一个地附加它们。这是密码。你知道吗

import pandas as pd

cartera = ['FB.O', 'SAN.MC','TRE.MC', 'BBVA.MC']

def ratios_funda(x):
    rat1=x[2].loc[[1,7,8,10],:]
    rat2=x[3].loc[[1,5],:]
    rat3=x[5].loc[[1,2,4,5],:]
    rat5=x[7].loc[[5,6],:]
    rat6=x[8].loc[[1,7],:]

    rats=[rat1,rat2,rat3,rat5,rat6]
    df=pd.concat([df.set_index(df.columns[0]) for df in rats])
    df.index.names=['Fundam ratios']
    df.rename(columns={1:'Company',2:'Industry',3:'Sector'}, inplace=True)
    df.index = df.index.str.strip()

    return df

def resultados():
    dataframe=pd.DataFrame()
    for titulos in cartera:

        ruta=pd.read_html('http://www.reuters.com/finance/ 
        stocks/financialHighlights?symbol='+str(titulos),flavor='html5lib')
        if dataframe.empty:
            dataframe= ratios_funda(ruta)
        else:
            dataframe=pd.concat([dataframe, ratios_funda(ruta)],axis=1)
    return dataframe

print(resultados())

看起来好像没有循环。你知道吗


Tags: 数据dataframedfindexdefmclocpd
2条回答

这不是代码的问题,问题是不是所有的代码在HTML中的结构都是相同的,这就是为什么我的结果不一。谢谢大家的帮助!你知道吗

问题在于在for循环中有return。你知道吗

def resultados():
    dataframe=pd.DataFrame()
    for titulos in cartera:
       ruta=pd.read_html('your url here')
       if dataframe.empty:
          dataframe= ratios_funda(ruta)
       else:
          dataframe=pd.concat([dataframe, ratios_funda(ruta)],axis=0)
    return dataframe

相关问题 更多 >