数据在 Pandas DataFrame 中显示不连贯

Data displayed incoherently in Pandas DataFrame

我在尝试从下面 link 中提取数据并将其正确显示在 DataFrame 中时遇到了一些问题。

下面的代码给了我想要的,但我认为是因为 link 中有几个 tables 具有相同的 class 名称:ReutersTabInit, 返回到 DataFrame 的结果有点乱。

link = r'http://www.4-traders.com/MICROSOFT-CORPORATION-4835/financials/'
soup = BeautifulSoup(requests.get(link).text, 'html.parser')
pandas_1 = pd.read_html(link, flavor='bs4', header=0, index_col=0, 
                        attrs={'class': "ReutersTabInit"}, encoding='utf8')

代码结果

[                            2016e       2017e
Size                                         
Capitalization         380 864 M$           -
Entreprise Value (EV)  331 350 M$  322 831 M$,                               2016e  2017e
Valuation                                 
P/E ratio (Price / EPS)       17,5x  15,3x
Capitalization / Revenue      4,14x  3,86x
EV / Revenue                  3,60x  3,27x
EV / EBITDA                   9,82x  8,91x
Yield (DPS / Price)           2,74%  3,02%
Price to book (Price / BVPS)  4,56x  3,99x,                                                2016e  2017e
Profitability                                              
Operating Margin (EBIT / Sales)                31,0%  32,1%
operating Leverage (Delta EBIT / Delta Sales)      -  1,55x
Net Margin (Net Profit / Revenue)              23,7%  24,5%
ROA (Net Profit / Asset)                       11,7%  13,1%
ROE (Net Profit / Equities)                    24,8%  26,5%
Rate of Dividend                               48,0%  46,4%,                                              2016e   2017e
Balance Sheet Analysis                                    
CAPEX / Sales                                6,52%   6,39%
Cash Flow / Sales (Taux d'autofinancement)   32,4%   34,5%
Capital Intensity (Assets / Sales)           2,03x   1,87x
Financial Leverage (Net Debt / EBITDA)      -1,47x  -1,60x]

如您所见,格式无处不在。我正在尝试让它这样显示。

想要的结果

                         2016e       2017e
Size                                         
Capitalization         380 864 M$           -
Entreprise Value (EV)  331 350 M$  322 831 M$,                               

                               2016e  2017e
Valuation                                 
P/E ratio (Price / EPS)       17,5x  15,3x
Capitalization / Revenue      4,14x  3,86x
EV / Revenue                  3,60x  3,27x
EV / EBITDA                   9,82x  8,91x
Yield (DPS / Price)           2,74%  3,02%
Price to book (Price / BVPS)  4,56x  3,99x,                                                

                                                2016e  2017e
Profitability                                              
Operating Margin (EBIT / Sales)                31,0%  32,1%
operating Leverage (Delta EBIT / Delta Sales)      -  1,55x
Net Margin (Net Profit / Revenue)              23,7%  24,5%
ROA (Net Profit / Asset)                       11,7%  13,1%
ROE (Net Profit / Equities)                    24,8%  26,5%
Rate of Dividend                               48,0%  46,4%,                                              

                                              2016e   2017e
Balance Sheet Analysis                                    
CAPEX / Sales                                6,52%   6,39%
Cash Flow / Sales (Taux d'autofinancement)   32,4%   34,5%
Capital Intensity (Assets / Sales)           2,03x   1,87x
Financial Leverage (Net Debt / EBITDA)      -1,47x  -1,60x]

这与它在网站上的显示方式相同。

任何人都知道我如何格式化它以在不同的 DataFrame 中显示每个 table,或在同一 DataFrame 中显示每个 table,但格式与网站相同?

pd.read_html 返回一个 DataFrame 列表,因此当您打印 pandas_1 时,它并没有很好地对齐。一次只打印其中一张,它们看起来会更像您期望的那样。

In [30]: for df in pandas_1:
   ....:     print df
   ....:     print
   ....:
                            2016e       2017e
Size
Capitalization         380 864 M$           -
Entreprise Value (EV)  331 350 M$  322 831 M$

                              2016e  2017e
Valuation
P/E ratio (Price / EPS)       17,5x  15,3x
Capitalization / Revenue      4,14x  3,86x
EV / Revenue                  3,60x  3,27x
EV / EBITDA                   9,82x  8,91x
Yield (DPS / Price)           2,74%  3,02%
Price to book (Price / BVPS)  4,56x  3,99x

                                               2016e  2017e
Profitability
Operating Margin (EBIT / Sales)                31,0%  32,1%
operating Leverage (Delta EBIT / Delta Sales)      -  1,55x
Net Margin (Net Profit / Revenue)              23,7%  24,5%
ROA (Net Profit / Asset)                       11,7%  13,1%
ROE (Net Profit / Equities)                    24,8%  26,5%
Rate of Dividend                               48,0%  46,4%

                                             2016e   2017e
Balance Sheet Analysis
CAPEX / Sales                                6,52%   6,39%
Cash Flow / Sales (Taux d'autofinancement)   32,4%   34,5%
Capital Intensity (Assets / Sales)           2,03x   1,87x
Financial Leverage (Net Debt / EBITDA)      -1,47x  -1,60x