2017-05-01 6 views
2

を通じて列の名前を変更します。は、私は次のコードを持っているループ

import pandas as pd 

stocks=['GOOG.O','FB.O'] 
def ratios(x): 
    df=x[2].loc[[1,7,8,10],:] 
    df=df.set_index(df.columns[0]) 
    df.index.names=['Fundam Data'] 
    df.rename(columns={1:'Company',3:'Sector'}, inplace=True) 
    del df[2] 
    return df 

def results(): 
    dataframe=pd.DataFrame() 
    for titulos in stocks:  
     ruta=pd.read_html('http://www.reuters.com/finance/stocks/financialHighlights?symbol='+str(titulos),flavor='html5lib') 
     x=ratios(ruta) 
     if dataframe.empty: 
      dataframe= x 
     else: 
      dataframe=pd.concat([dataframe,x],axis=1, join_axes=dataframe.index) 
    return dataframe  
print (results())  

を現在の出力は、次のとおりです。

                         Company Sector Company Sector 
Fundam Data 
P/E Ratio (TTM)            32.14  20.94   43.25  20.94 
Price to Sales (TTM)        7.01   5.62   15.71   5.62 
Price to Book (MRQ)         4.60   1.98    7.34   1.98 
Price to Cash Flow (TTM)   24.70  14.83   34.57  14.83 

私は、対応するティッカーによって名称「会社」を代用したいと思います。 所望の出力は次のようになります。

ratios(x)
                          GOOG.O Sector  FB.O Sector 
Fundam Data 
P/E Ratio (TTM)            32.14  20.94   43.25  20.94 
Price to Sales (TTM)        7.01   5.62   15.71   5.62 
Price to Book (MRQ)         4.60   1.98    7.34   1.98 
Price to Cash Flow (TTM)   24.70  14.83   34.57  14.83 
+0

あなたがここで求めているものは混乱しています。結果の出力をテーブルに追加できますか? –

+0

@Max Power、私のお詫び申し上げます、編集。 – ge00rge

答えて

2

手動df.rename(columns={1:'Company',3:'Sector'}, inplace=True)と「会社」に列名を設定します。しかし結果では、for titulos in stocksでそれぞれの特定の会社名をループします。私のソリューションは、反復処理中の特定の会社名をresults()からratios()に渡すので、名前変更ステートメントで使用できます。

これは、目的の結果を印刷します。

import pandas as pd 
import html5lib 

stocks=['GOOG.O','FB.O'] 
def ratios(x, company_name): 
    df=x[2].loc[[1,7,8,10],:] 
    df=df.set_index(df.columns[0]) 
    df.index.names=['Fundam Data'] 
    df.rename(columns={1:company_name,3:'Sector'}, inplace=True) 
    del df[2] 
    return df 

def results(): 
    dataframe=pd.DataFrame() 
    for titulos in stocks:  
     ruta=pd.read_html('http://www.reuters.com/finance/stocks/financialHighlights?symbol='+str(titulos),flavor='html5lib') 
     x=ratios(ruta, titulos) 
     if dataframe.empty: 
      dataframe= x 
     else: 
      dataframe=pd.concat([dataframe,x],axis=1)#, join_axes=dataframe.index]) 
    return dataframe  

print (results())  
+0

偉大な説明、ありがとうマックス – ge00rge

関連する問題