title: Restructuring Dataframe
body: <p>I have a dataframe that currently looks as follows and has 262800 rows and 3 columns. My dataframe is currently as follows:</p>
  
  <pre><code>       Currency    Maturity     value
  0           GBP  0.08333333  4.709456
  1           GBP  0.08333333  4.713099
  2           GBP  0.08333333  4.707237
  3           GBP  0.08333333  4.705043
  4           GBP  0.08333333  4.697150
  5           GBP  0.08333333  4.710647
  6           GBP  0.08333333  4.701150
  7           GBP  0.08333333  4.694639
  8           GBP  0.08333333  4.686111
  9           GBP  0.08333333  4.714750
  ......
  262770      GBP          25  2.432869
  </code></pre>
  
  <p>I want the dataframe to be of the form below. I've taken some steps towards this, which included using <code>melt</code> in the code below, but for some reason that got rid of my <code>Date</code> Column and resulted in the dataframe above. I am unsure how to get the Date Column back and obtain the Dataframe below:</p>
  
  <pre><code>   Maturity     Date            Currency  Yield_pct
  0  0.08333333   2005-01-04      GBP       4.709456              
  1  0.08333333   2005-01-05      GBP       4.713099               
  2  0.08333333   2005-01-06      GBP       4.707237
  ....
  9  25           2005-01-04      GBP       2.432869
  </code></pre>
  
  <p>My code is as follows:</p>
  
  <pre><code>from pandas.io.excel import read_excel
  import pandas as pd
  import numpy as np
  
  url = 'http://www.bankofengland.co.uk/statistics/Documents/yieldcurve/uknom05_mdaily.xls'
  
  # check the sheet number, spot: 9/9, short end 7/9
  spot_curve = read_excel(url, sheetname=8)
  short_end_spot_curve = read_excel(url, sheetname=6)
  
  # do some cleaning, keep NaN for now, as forward fill NaN is not recommended for yield curve
  spot_curve.columns = spot_curve.loc['years:']
  spot_curve.columns.name = 'Maturity'
  valid_index = spot_curve.index[4:]
  spot_curve = spot_curve.loc[valid_index]
  # remove all maturities within 5 years as those are duplicated in short-end file
  col_mask = spot_curve.columns.values &gt; 5
  spot_curve = spot_curve.iloc[:, col_mask]
  
  
  short_end_spot_curve.columns = short_end_spot_curve.loc['years:']
  short_end_spot_curve.columns.name = 'Maturity'
  valid_index = short_end_spot_curve.index[4:]
  short_end_spot_curve = short_end_spot_curve.loc[valid_index]
  
  # merge these two, time index are identical
  # ==============================================
  combined_data = pd.concat([short_end_spot_curve, spot_curve], axis=1, join='outer')
  # sort the maturity from short end to long end
  combined_data.sort_index(axis=1, inplace=True)
  
  def filter_func(group):
      return group.isnull().sum(axis=1) &lt;= 50
  
  combined_data = combined_data.groupby(level=0).filter(filter_func)
  
  idx = 0
  values = ['GBP'] * len(combined_data.index)
  combined_data.insert(idx, 'Currency', values) 
  
  #print combined_data.columns.values
  
  #I had to do the melt 
  combined_data = pd.melt(combined_data,id_vars=['Currency'])#Arbitrarily melted on 'Currency' as for some reason when I do print combined_data.columns.values I see that 'Currency' corresponds to 0.08333333, etc.
  print combined_data
  </code></pre>