3

I have the following code :

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()) 

The current output is:

                         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 

I would like to substitute the name 'Company' by the corresponding ticker. The desired output would be:

                          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 
2
  • I'm confused what you're asking for here. Could you add a table with the result output as you want it? Commented May 1, 2017 at 9:45
  • @Max Power , my apologize, edited. Commented May 1, 2017 at 9:48

1 Answer 1

3

In ratios(x) you manually set the column names to 'Company' with df.rename(columns={1:'Company',3:'Sector'}, inplace=True). But then in results you loop through each specific company name with for titulos in stocks. My solution just passes the specific company name you're iterating through from results() to ratios() so it can be used in the rename statement.

This prints your desired results.

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()) 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.