2015-07-20 32 views
2

我有一個熊貓數據幀如下:如何阻止大熊貓在轉置日期時間索引後向列標題添加時間?

In [10]: libor_table 
Out[10]: 
      Euribor interest rate - 3 months Euribor interest rate - 6 months \ 
2015-07-17       -0.019%       0.049% 
2015-07-16       -0.019%       0.049% 
2015-07-15       -0.019%       0.049% 
2015-07-14       -0.019%       0.049% 
2015-07-13       -0.019%       0.049% 

      GBP LIBOR - 3 months GBP LIBOR - 6 months USD LIBOR - 3 months \ 
2015-07-17    0.58375%    0.75406%    0.29175% 
2015-07-16    0.58438%    0.75313%    0.28700% 
2015-07-15    0.58406%    0.75063%    0.28850% 
2015-07-14    0.58219%    0.74250%    0.28850% 
2015-07-13    0.58188%    0.73750%    0.28880% 

      USD LIBOR - 6 months 
2015-07-17    0.46020% 
2015-07-16    0.45570% 
2015-07-15    0.46195% 
2015-07-14    0.46345% 
2015-07-13    0.46340% 

該指數是在日期時間:

In [11]: libor_table.index 
Out[11]: 
DatetimeIndex(['2015-07-17', '2015-07-16', '2015-07-15', '2015-07-14', 
       '2015-07-13'], 
       dtype='datetime64[ns]', freq=None, tz=None) 

我的問題是,當我再使表到使用to_html()一個HTML表格。標準的數據幀轉換爲HTML表就好了:

<table border="1" class="dataframe"> 
    <thead> 
    <tr style="text-align: right;"> 
     <th></th> 
     <th>Euribor interest rate - 3 months</th> 
     <th>Euribor interest rate - 6 months</th> 
     <th>GBP LIBOR - 3 months</th> 
     <th>GBP LIBOR - 6 months</th> 
     <th>USD LIBOR - 3 months</th> 
     <th>USD LIBOR - 6 months</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <th>2015-07-17</th> 
     <td>-0.019%</td> 
     <td>0.049%</td> 
     <td>0.58375%</td> 
     <td>0.75406%</td> 
     <td>0.29175%</td> 
     <td>0.46020%</td> 
    </tr> 
    <tr> 
     <th>2015-07-16</th> 
     <td>-0.019%</td> 
     <td>0.049%</td> 
     <td>0.58438%</td> 
     <td>0.75313%</td> 
     <td>0.28700%</td> 
     <td>0.45570%</td> 
    </tr> 
    <tr> 
     <th>2015-07-15</th> 
     <td>-0.019%</td> 
     <td>0.049%</td> 
     <td>0.58406%</td> 
     <td>0.75063%</td> 
     <td>0.28850%</td> 
     <td>0.46195%</td> 
    </tr> 
    <tr> 
     <th>2015-07-14</th> 
     <td>-0.019%</td> 
     <td>0.049%</td> 
     <td>0.58219%</td> 
     <td>0.74250%</td> 
     <td>0.28850%</td> 
     <td>0.46345%</td> 
    </tr> 
    <tr> 
     <th>2015-07-13</th> 
     <td>-0.019%</td> 
     <td>0.049%</td> 
     <td>0.58188%</td> 
     <td>0.73750%</td> 
     <td>0.28880%</td> 
     <td>0.46340%</td> 
    </tr> 
    </tbody> 
</table> 

但是我想TRANSPOSE(移調)的HTML輸出數據框 - libor_table.transpose().to_html(),當我這樣做熊貓增加了時間的列標題,就像這樣:

<table border="1" class="dataframe"> 
    <thead> 
    <tr style="text-align: right;"> 
     <th></th> 
     <th>2015-07-17 00:00:00</th> 
     <th>2015-07-16 00:00:00</th> 
     <th>2015-07-15 00:00:00</th> 
     <th>2015-07-14 00:00:00</th> 
     <th>2015-07-13 00:00:00</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <th>Euribor interest rate - 3 months</th> 
     <td>-0.019%</td> 
     <td>-0.019%</td> 
     <td>-0.019%</td> 
     <td>-0.019%</td> 
     <td>-0.019%</td> 
    </tr> 
    <tr> 
     <th>Euribor interest rate - 6 months</th> 
     <td>0.049%</td> 
     <td>0.049%</td> 
     <td>0.049%</td> 
     <td>0.049%</td> 
     <td>0.049%</td> 
    </tr> 
    <tr> 
     <th>GBP LIBOR - 3 months</th> 
     <td>0.58375%</td> 
     <td>0.58438%</td> 
     <td>0.58406%</td> 
     <td>0.58219%</td> 
     <td>0.58188%</td> 
    </tr> 
    <tr> 
     <th>GBP LIBOR - 6 months</th> 
     <td>0.75406%</td> 
     <td>0.75313%</td> 
     <td>0.75063%</td> 
     <td>0.74250%</td> 
     <td>0.73750%</td> 
    </tr> 
    <tr> 
     <th>USD LIBOR - 3 months</th> 
     <td>0.29175%</td> 
     <td>0.28700%</td> 
     <td>0.28850%</td> 
     <td>0.28850%</td> 
     <td>0.28880%</td> 
    </tr> 
    <tr> 
     <th>USD LIBOR - 6 months</th> 
     <td>0.46020%</td> 
     <td>0.45570%</td> 
     <td>0.46195%</td> 
     <td>0.46345%</td> 
     <td>0.46340%</td> 
    </tr> 
    </tbody> 
</table> 

爲什麼熊貓這樣做,有沒有辦法阻止它?

編輯:此錯誤提交here

+1

不知道爲什麼它會這樣做,但是下面的解決方案對我來說是個解決方法:'libor_table.index = libor_table.index.date libor_table.T.to_html()'值得注意爲一個問題:https://github.com/pydata /熊貓/問題 – EdChum

+0

這樣做的伎倆,謝謝。我以前從未向github發佈過問題 - 多麼令人興奮。 – BML91

+0

如果你確實發佈了一個問題,你可以編輯你的問題並附上問題鏈接,謝謝 – EdChum

回答

1

這看起來像一個錯誤給我,我可以重現用一個小例子:

In [120]: 
# generate some dummy data 
t="""time,value 
2015-07-17,0 
2015-07-18,1""" 
df = pd.read_csv(io.StringIO(t), parse_dates=True, index_col=[0]) 
df 

Out[120]: 
      value 
time    
2015-07-17  0 
2015-07-18  1 

調用此to_html按預期工作:

In [121]: 
df.to_html() 

Out[121]: 
'<table border="1" class="dataframe">\n <thead>\n <tr style="text-align: right;">\n  <th></th>\n  <th>value</th>\n </tr>\n <tr>\n  <th>time</th>\n  <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n  <th>2015-07-17</th>\n  <td>0</td>\n </tr>\n <tr>\n  <th>2015-07-18</th>\n  <td>1</td>\n </tr>\n </tbody>\n</table>' 

要解決的換位格式問題,你可以明確將datetimeindex設置爲date

In [122]: 
df.index = df.index.date 
df.T.to_html() 

Out[122]: 
'<table border="1" class="dataframe">\n <thead>\n <tr style="text-align: right;">\n  <th></th>\n  <th>2015-07-17</th>\n  <th>2015-07-18</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n  <th>value</th>\n  <td>0</td>\n  <td>1</td>\n </tr>\n </tbody>\n</table>' 
相關問題