2015-07-20 35 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>' 
相关问题