{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Pandas `read_html`\n",
    "\n",
    "The `pandas` package provides us with one of the easiest ways to get data from web pages: `.read_html()`.\n",
    "\n",
    "However, this method only works if the data is already nicely formatted in an HTML table. For example, the unemployment rate data from BLS:  \n",
    "https://data.bls.gov/timeseries/LNS14000000\n",
    "\n",
    "If we pass this URL to `.read_html()`, it will return a list of all of the `<table>` elements it found on the page."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "url = 'https://data.bls.gov/timeseries/LNS14000000'\n",
    "df_unemp = pd.read_html(url)\n",
    "\n",
    "len(df_unemp)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case it found two tables.\n",
    "We can print them out and see that the unemployment data we want is contained in the second table."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Series Id:</td>\n",
       "      <td>LNS14000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Seasonally Adjusted</td>\n",
       "      <td>Seasonally Adjusted</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Series title:</td>\n",
       "      <td>(Seas) Unemployment Rate</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Labor force status:</td>\n",
       "      <td>Unemployment rate</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Type of data:</td>\n",
       "      <td>Percent or rate</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Age:</td>\n",
       "      <td>16 years and over</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     0                         1\n",
       "0           Series Id:               LNS14000000\n",
       "1  Seasonally Adjusted       Seasonally Adjusted\n",
       "2        Series title:  (Seas) Unemployment Rate\n",
       "3  Labor force status:         Unemployment rate\n",
       "4        Type of data:           Percent or rate\n",
       "5                 Age:         16 years and over"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_unemp[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Year</th>\n",
       "      <th>Jan</th>\n",
       "      <th>Feb</th>\n",
       "      <th>Mar</th>\n",
       "      <th>Apr</th>\n",
       "      <th>May</th>\n",
       "      <th>Jun</th>\n",
       "      <th>Jul</th>\n",
       "      <th>Aug</th>\n",
       "      <th>Sep</th>\n",
       "      <th>Oct</th>\n",
       "      <th>Nov</th>\n",
       "      <th>Dec</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2012</td>\n",
       "      <td>8.3</td>\n",
       "      <td>8.3</td>\n",
       "      <td>8.2</td>\n",
       "      <td>8.2</td>\n",
       "      <td>8.2</td>\n",
       "      <td>8.2</td>\n",
       "      <td>8.2</td>\n",
       "      <td>8.1</td>\n",
       "      <td>7.8</td>\n",
       "      <td>7.8</td>\n",
       "      <td>7.7</td>\n",
       "      <td>7.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2013</td>\n",
       "      <td>8.0</td>\n",
       "      <td>7.7</td>\n",
       "      <td>7.5</td>\n",
       "      <td>7.6</td>\n",
       "      <td>7.5</td>\n",
       "      <td>7.5</td>\n",
       "      <td>7.3</td>\n",
       "      <td>7.2</td>\n",
       "      <td>7.2</td>\n",
       "      <td>7.2</td>\n",
       "      <td>6.9</td>\n",
       "      <td>6.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2014</td>\n",
       "      <td>6.6</td>\n",
       "      <td>6.7</td>\n",
       "      <td>6.7</td>\n",
       "      <td>6.2</td>\n",
       "      <td>6.3</td>\n",
       "      <td>6.1</td>\n",
       "      <td>6.2</td>\n",
       "      <td>6.1</td>\n",
       "      <td>5.9</td>\n",
       "      <td>5.7</td>\n",
       "      <td>5.8</td>\n",
       "      <td>5.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2015</td>\n",
       "      <td>5.7</td>\n",
       "      <td>5.5</td>\n",
       "      <td>5.4</td>\n",
       "      <td>5.4</td>\n",
       "      <td>5.6</td>\n",
       "      <td>5.3</td>\n",
       "      <td>5.2</td>\n",
       "      <td>5.1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.1</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2016</td>\n",
       "      <td>4.8</td>\n",
       "      <td>4.9</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.1</td>\n",
       "      <td>4.8</td>\n",
       "      <td>4.9</td>\n",
       "      <td>4.8</td>\n",
       "      <td>4.9</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4.9</td>\n",
       "      <td>4.7</td>\n",
       "      <td>4.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2017</td>\n",
       "      <td>4.7</td>\n",
       "      <td>4.6</td>\n",
       "      <td>4.4</td>\n",
       "      <td>4.4</td>\n",
       "      <td>4.4</td>\n",
       "      <td>4.3</td>\n",
       "      <td>4.3</td>\n",
       "      <td>4.4</td>\n",
       "      <td>4.3</td>\n",
       "      <td>4.2</td>\n",
       "      <td>4.2</td>\n",
       "      <td>4.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2018</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3.8</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3.8</td>\n",
       "      <td>3.8</td>\n",
       "      <td>3.7</td>\n",
       "      <td>3.8</td>\n",
       "      <td>3.8</td>\n",
       "      <td>3.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2019</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3.8</td>\n",
       "      <td>3.8</td>\n",
       "      <td>3.6</td>\n",
       "      <td>3.7</td>\n",
       "      <td>3.6</td>\n",
       "      <td>3.7</td>\n",
       "      <td>3.7</td>\n",
       "      <td>3.5</td>\n",
       "      <td>3.6</td>\n",
       "      <td>3.6</td>\n",
       "      <td>3.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2020</td>\n",
       "      <td>3.5</td>\n",
       "      <td>3.5</td>\n",
       "      <td>4.4</td>\n",
       "      <td>14.7</td>\n",
       "      <td>13.2</td>\n",
       "      <td>11.0</td>\n",
       "      <td>10.2</td>\n",
       "      <td>8.4</td>\n",
       "      <td>7.9</td>\n",
       "      <td>6.9</td>\n",
       "      <td>6.7</td>\n",
       "      <td>6.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2021</td>\n",
       "      <td>6.3</td>\n",
       "      <td>6.2</td>\n",
       "      <td>6.1</td>\n",
       "      <td>6.1</td>\n",
       "      <td>5.8</td>\n",
       "      <td>5.9</td>\n",
       "      <td>5.4</td>\n",
       "      <td>5.2</td>\n",
       "      <td>4.8</td>\n",
       "      <td>4.5</td>\n",
       "      <td>4.2</td>\n",
       "      <td>3.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>2022</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3.8</td>\n",
       "      <td>3.6</td>\n",
       "      <td>3.6</td>\n",
       "      <td>3.6</td>\n",
       "      <td>3.6</td>\n",
       "      <td>3.5</td>\n",
       "      <td>3.7</td>\n",
       "      <td>3.5</td>\n",
       "      <td>3.7</td>\n",
       "      <td>3.6</td>\n",
       "      <td>3.5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Year  Jan  Feb  Mar   Apr   May   Jun   Jul  Aug  Sep  Oct  Nov  Dec\n",
       "0   2012  8.3  8.3  8.2   8.2   8.2   8.2   8.2  8.1  7.8  7.8  7.7  7.9\n",
       "1   2013  8.0  7.7  7.5   7.6   7.5   7.5   7.3  7.2  7.2  7.2  6.9  6.7\n",
       "2   2014  6.6  6.7  6.7   6.2   6.3   6.1   6.2  6.1  5.9  5.7  5.8  5.6\n",
       "3   2015  5.7  5.5  5.4   5.4   5.6   5.3   5.2  5.1  5.0  5.0  5.1  5.0\n",
       "4   2016  4.8  4.9  5.0   5.1   4.8   4.9   4.8  4.9  5.0  4.9  4.7  4.7\n",
       "5   2017  4.7  4.6  4.4   4.4   4.4   4.3   4.3  4.4  4.3  4.2  4.2  4.1\n",
       "6   2018  4.0  4.1  4.0   4.0   3.8   4.0   3.8  3.8  3.7  3.8  3.8  3.9\n",
       "7   2019  4.0  3.8  3.8   3.6   3.7   3.6   3.7  3.7  3.5  3.6  3.6  3.6\n",
       "8   2020  3.5  3.5  4.4  14.7  13.2  11.0  10.2  8.4  7.9  6.9  6.7  6.7\n",
       "9   2021  6.3  6.2  6.1   6.1   5.8   5.9   5.4  5.2  4.8  4.5  4.2  3.9\n",
       "10  2022  4.0  3.8  3.6   3.6   3.6   3.6   3.5  3.7  3.5  3.7  3.6  3.5"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_unemp[1]"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The same thing works for the treasury yield curve data, though it requires a bit of post-scraping clean up."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "url = 'https://home.treasury.gov/resource-center/data-chart-center/interest-rates/TextView?type=daily_treasury_yield_curve&field_tdr_date_value_month=202301'\n",
    "df_rates = pd.read_html(url)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>20 YR</th>\n",
       "      <th>30 YR</th>\n",
       "      <th>Extrapolation Factor</th>\n",
       "      <th>8 WEEKS BANK DISCOUNT</th>\n",
       "      <th>COUPON EQUIVALENT</th>\n",
       "      <th>17 WEEKS BANK DISCOUNT</th>\n",
       "      <th>COUPON EQUIVALENT.1</th>\n",
       "      <th>52 WEEKS BANK DISCOUNT</th>\n",
       "      <th>COUPON EQUIVALENT.2</th>\n",
       "      <th>...</th>\n",
       "      <th>4 Mo</th>\n",
       "      <th>6 Mo</th>\n",
       "      <th>1 Yr</th>\n",
       "      <th>2 Yr</th>\n",
       "      <th>3 Yr</th>\n",
       "      <th>5 Yr</th>\n",
       "      <th>7 Yr</th>\n",
       "      <th>10 Yr</th>\n",
       "      <th>20 Yr</th>\n",
       "      <th>30 Yr</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>01/03/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.70</td>\n",
       "      <td>4.77</td>\n",
       "      <td>4.72</td>\n",
       "      <td>4.40</td>\n",
       "      <td>4.18</td>\n",
       "      <td>3.94</td>\n",
       "      <td>3.89</td>\n",
       "      <td>3.79</td>\n",
       "      <td>4.06</td>\n",
       "      <td>3.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>01/04/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.69</td>\n",
       "      <td>4.77</td>\n",
       "      <td>4.71</td>\n",
       "      <td>4.36</td>\n",
       "      <td>4.11</td>\n",
       "      <td>3.85</td>\n",
       "      <td>3.79</td>\n",
       "      <td>3.69</td>\n",
       "      <td>3.97</td>\n",
       "      <td>3.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>01/05/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.75</td>\n",
       "      <td>4.81</td>\n",
       "      <td>4.78</td>\n",
       "      <td>4.45</td>\n",
       "      <td>4.18</td>\n",
       "      <td>3.90</td>\n",
       "      <td>3.82</td>\n",
       "      <td>3.71</td>\n",
       "      <td>3.96</td>\n",
       "      <td>3.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>01/06/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.79</td>\n",
       "      <td>4.71</td>\n",
       "      <td>4.24</td>\n",
       "      <td>3.96</td>\n",
       "      <td>3.69</td>\n",
       "      <td>3.63</td>\n",
       "      <td>3.55</td>\n",
       "      <td>3.84</td>\n",
       "      <td>3.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>01/09/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.83</td>\n",
       "      <td>4.69</td>\n",
       "      <td>4.19</td>\n",
       "      <td>3.93</td>\n",
       "      <td>3.66</td>\n",
       "      <td>3.60</td>\n",
       "      <td>3.53</td>\n",
       "      <td>3.83</td>\n",
       "      <td>3.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>01/10/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.77</td>\n",
       "      <td>4.85</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.24</td>\n",
       "      <td>3.94</td>\n",
       "      <td>3.72</td>\n",
       "      <td>3.67</td>\n",
       "      <td>3.61</td>\n",
       "      <td>3.91</td>\n",
       "      <td>3.74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>01/11/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.82</td>\n",
       "      <td>4.84</td>\n",
       "      <td>4.73</td>\n",
       "      <td>4.20</td>\n",
       "      <td>3.90</td>\n",
       "      <td>3.66</td>\n",
       "      <td>3.61</td>\n",
       "      <td>3.54</td>\n",
       "      <td>3.84</td>\n",
       "      <td>3.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>01/12/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.76</td>\n",
       "      <td>4.66</td>\n",
       "      <td>4.12</td>\n",
       "      <td>3.79</td>\n",
       "      <td>3.53</td>\n",
       "      <td>3.48</td>\n",
       "      <td>3.43</td>\n",
       "      <td>3.73</td>\n",
       "      <td>3.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>01/13/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.73</td>\n",
       "      <td>4.77</td>\n",
       "      <td>4.69</td>\n",
       "      <td>4.22</td>\n",
       "      <td>3.88</td>\n",
       "      <td>3.60</td>\n",
       "      <td>3.55</td>\n",
       "      <td>3.49</td>\n",
       "      <td>3.79</td>\n",
       "      <td>3.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>01/17/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.82</td>\n",
       "      <td>4.67</td>\n",
       "      <td>4.18</td>\n",
       "      <td>3.86</td>\n",
       "      <td>3.60</td>\n",
       "      <td>3.57</td>\n",
       "      <td>3.53</td>\n",
       "      <td>3.81</td>\n",
       "      <td>3.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>01/18/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.79</td>\n",
       "      <td>4.63</td>\n",
       "      <td>4.06</td>\n",
       "      <td>3.72</td>\n",
       "      <td>3.43</td>\n",
       "      <td>3.40</td>\n",
       "      <td>3.37</td>\n",
       "      <td>3.65</td>\n",
       "      <td>3.54</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>01/19/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.79</td>\n",
       "      <td>4.65</td>\n",
       "      <td>4.09</td>\n",
       "      <td>3.76</td>\n",
       "      <td>3.48</td>\n",
       "      <td>3.43</td>\n",
       "      <td>3.39</td>\n",
       "      <td>3.69</td>\n",
       "      <td>3.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>01/20/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.75</td>\n",
       "      <td>4.80</td>\n",
       "      <td>4.68</td>\n",
       "      <td>4.14</td>\n",
       "      <td>3.83</td>\n",
       "      <td>3.56</td>\n",
       "      <td>3.51</td>\n",
       "      <td>3.48</td>\n",
       "      <td>3.77</td>\n",
       "      <td>3.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>01/23/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.76</td>\n",
       "      <td>4.82</td>\n",
       "      <td>4.70</td>\n",
       "      <td>4.21</td>\n",
       "      <td>3.88</td>\n",
       "      <td>3.61</td>\n",
       "      <td>3.56</td>\n",
       "      <td>3.52</td>\n",
       "      <td>3.80</td>\n",
       "      <td>3.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>01/24/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.75</td>\n",
       "      <td>4.84</td>\n",
       "      <td>4.70</td>\n",
       "      <td>4.12</td>\n",
       "      <td>3.86</td>\n",
       "      <td>3.58</td>\n",
       "      <td>3.52</td>\n",
       "      <td>3.46</td>\n",
       "      <td>3.73</td>\n",
       "      <td>3.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>01/25/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.75</td>\n",
       "      <td>4.79</td>\n",
       "      <td>4.67</td>\n",
       "      <td>4.11</td>\n",
       "      <td>3.84</td>\n",
       "      <td>3.54</td>\n",
       "      <td>3.51</td>\n",
       "      <td>3.46</td>\n",
       "      <td>3.74</td>\n",
       "      <td>3.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>01/26/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.76</td>\n",
       "      <td>4.79</td>\n",
       "      <td>4.68</td>\n",
       "      <td>4.17</td>\n",
       "      <td>3.88</td>\n",
       "      <td>3.58</td>\n",
       "      <td>3.54</td>\n",
       "      <td>3.49</td>\n",
       "      <td>3.75</td>\n",
       "      <td>3.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>01/27/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.76</td>\n",
       "      <td>4.81</td>\n",
       "      <td>4.68</td>\n",
       "      <td>4.19</td>\n",
       "      <td>3.90</td>\n",
       "      <td>3.62</td>\n",
       "      <td>3.58</td>\n",
       "      <td>3.52</td>\n",
       "      <td>3.77</td>\n",
       "      <td>3.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>01/30/2023</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>4.76</td>\n",
       "      <td>4.82</td>\n",
       "      <td>4.71</td>\n",
       "      <td>4.25</td>\n",
       "      <td>3.96</td>\n",
       "      <td>3.68</td>\n",
       "      <td>3.62</td>\n",
       "      <td>3.55</td>\n",
       "      <td>3.79</td>\n",
       "      <td>3.66</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>19 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          Date  20 YR  30 YR  Extrapolation Factor  8 WEEKS BANK DISCOUNT  \\\n",
       "0   01/03/2023    NaN    NaN                   NaN                    NaN   \n",
       "1   01/04/2023    NaN    NaN                   NaN                    NaN   \n",
       "2   01/05/2023    NaN    NaN                   NaN                    NaN   \n",
       "3   01/06/2023    NaN    NaN                   NaN                    NaN   \n",
       "4   01/09/2023    NaN    NaN                   NaN                    NaN   \n",
       "5   01/10/2023    NaN    NaN                   NaN                    NaN   \n",
       "6   01/11/2023    NaN    NaN                   NaN                    NaN   \n",
       "7   01/12/2023    NaN    NaN                   NaN                    NaN   \n",
       "8   01/13/2023    NaN    NaN                   NaN                    NaN   \n",
       "9   01/17/2023    NaN    NaN                   NaN                    NaN   \n",
       "10  01/18/2023    NaN    NaN                   NaN                    NaN   \n",
       "11  01/19/2023    NaN    NaN                   NaN                    NaN   \n",
       "12  01/20/2023    NaN    NaN                   NaN                    NaN   \n",
       "13  01/23/2023    NaN    NaN                   NaN                    NaN   \n",
       "14  01/24/2023    NaN    NaN                   NaN                    NaN   \n",
       "15  01/25/2023    NaN    NaN                   NaN                    NaN   \n",
       "16  01/26/2023    NaN    NaN                   NaN                    NaN   \n",
       "17  01/27/2023    NaN    NaN                   NaN                    NaN   \n",
       "18  01/30/2023    NaN    NaN                   NaN                    NaN   \n",
       "\n",
       "    COUPON EQUIVALENT  17 WEEKS BANK DISCOUNT  COUPON EQUIVALENT.1  \\\n",
       "0                 NaN                     NaN                  NaN   \n",
       "1                 NaN                     NaN                  NaN   \n",
       "2                 NaN                     NaN                  NaN   \n",
       "3                 NaN                     NaN                  NaN   \n",
       "4                 NaN                     NaN                  NaN   \n",
       "5                 NaN                     NaN                  NaN   \n",
       "6                 NaN                     NaN                  NaN   \n",
       "7                 NaN                     NaN                  NaN   \n",
       "8                 NaN                     NaN                  NaN   \n",
       "9                 NaN                     NaN                  NaN   \n",
       "10                NaN                     NaN                  NaN   \n",
       "11                NaN                     NaN                  NaN   \n",
       "12                NaN                     NaN                  NaN   \n",
       "13                NaN                     NaN                  NaN   \n",
       "14                NaN                     NaN                  NaN   \n",
       "15                NaN                     NaN                  NaN   \n",
       "16                NaN                     NaN                  NaN   \n",
       "17                NaN                     NaN                  NaN   \n",
       "18                NaN                     NaN                  NaN   \n",
       "\n",
       "    52 WEEKS BANK DISCOUNT  COUPON EQUIVALENT.2  ...  4 Mo  6 Mo  1 Yr  2 Yr  \\\n",
       "0                      NaN                  NaN  ...  4.70  4.77  4.72  4.40   \n",
       "1                      NaN                  NaN  ...  4.69  4.77  4.71  4.36   \n",
       "2                      NaN                  NaN  ...  4.75  4.81  4.78  4.45   \n",
       "3                      NaN                  NaN  ...  4.74  4.79  4.71  4.24   \n",
       "4                      NaN                  NaN  ...  4.74  4.83  4.69  4.19   \n",
       "5                      NaN                  NaN  ...  4.77  4.85  4.74  4.24   \n",
       "6                      NaN                  NaN  ...  4.82  4.84  4.73  4.20   \n",
       "7                      NaN                  NaN  ...  4.74  4.76  4.66  4.12   \n",
       "8                      NaN                  NaN  ...  4.73  4.77  4.69  4.22   \n",
       "9                      NaN                  NaN  ...  4.74  4.82  4.67  4.18   \n",
       "10                     NaN                  NaN  ...  4.74  4.79  4.63  4.06   \n",
       "11                     NaN                  NaN  ...  4.74  4.79  4.65  4.09   \n",
       "12                     NaN                  NaN  ...  4.75  4.80  4.68  4.14   \n",
       "13                     NaN                  NaN  ...  4.76  4.82  4.70  4.21   \n",
       "14                     NaN                  NaN  ...  4.75  4.84  4.70  4.12   \n",
       "15                     NaN                  NaN  ...  4.75  4.79  4.67  4.11   \n",
       "16                     NaN                  NaN  ...  4.76  4.79  4.68  4.17   \n",
       "17                     NaN                  NaN  ...  4.76  4.81  4.68  4.19   \n",
       "18                     NaN                  NaN  ...  4.76  4.82  4.71  4.25   \n",
       "\n",
       "    3 Yr  5 Yr  7 Yr  10 Yr  20 Yr  30 Yr  \n",
       "0   4.18  3.94  3.89   3.79   4.06   3.88  \n",
       "1   4.11  3.85  3.79   3.69   3.97   3.81  \n",
       "2   4.18  3.90  3.82   3.71   3.96   3.78  \n",
       "3   3.96  3.69  3.63   3.55   3.84   3.67  \n",
       "4   3.93  3.66  3.60   3.53   3.83   3.66  \n",
       "5   3.94  3.72  3.67   3.61   3.91   3.74  \n",
       "6   3.90  3.66  3.61   3.54   3.84   3.67  \n",
       "7   3.79  3.53  3.48   3.43   3.73   3.56  \n",
       "8   3.88  3.60  3.55   3.49   3.79   3.61  \n",
       "9   3.86  3.60  3.57   3.53   3.81   3.64  \n",
       "10  3.72  3.43  3.40   3.37   3.65   3.54  \n",
       "11  3.76  3.48  3.43   3.39   3.69   3.57  \n",
       "12  3.83  3.56  3.51   3.48   3.77   3.66  \n",
       "13  3.88  3.61  3.56   3.52   3.80   3.69  \n",
       "14  3.86  3.58  3.52   3.46   3.73   3.62  \n",
       "15  3.84  3.54  3.51   3.46   3.74   3.62  \n",
       "16  3.88  3.58  3.54   3.49   3.75   3.62  \n",
       "17  3.90  3.62  3.58   3.52   3.77   3.64  \n",
       "18  3.96  3.68  3.62   3.55   3.79   3.66  \n",
       "\n",
       "[19 rows x 23 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_rates[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>1 Mo</th>\n",
       "      <th>2 Mo</th>\n",
       "      <th>3 Mo</th>\n",
       "      <th>4 Mo</th>\n",
       "      <th>6 Mo</th>\n",
       "      <th>1 Yr</th>\n",
       "      <th>2 Yr</th>\n",
       "      <th>3 Yr</th>\n",
       "      <th>5 Yr</th>\n",
       "      <th>7 Yr</th>\n",
       "      <th>10 Yr</th>\n",
       "      <th>20 Yr</th>\n",
       "      <th>30 Yr</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>01/03/2023</td>\n",
       "      <td>4.17</td>\n",
       "      <td>4.42</td>\n",
       "      <td>4.53</td>\n",
       "      <td>4.70</td>\n",
       "      <td>4.77</td>\n",
       "      <td>4.72</td>\n",
       "      <td>4.40</td>\n",
       "      <td>4.18</td>\n",
       "      <td>3.94</td>\n",
       "      <td>3.89</td>\n",
       "      <td>3.79</td>\n",
       "      <td>4.06</td>\n",
       "      <td>3.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>01/04/2023</td>\n",
       "      <td>4.20</td>\n",
       "      <td>4.42</td>\n",
       "      <td>4.55</td>\n",
       "      <td>4.69</td>\n",
       "      <td>4.77</td>\n",
       "      <td>4.71</td>\n",
       "      <td>4.36</td>\n",
       "      <td>4.11</td>\n",
       "      <td>3.85</td>\n",
       "      <td>3.79</td>\n",
       "      <td>3.69</td>\n",
       "      <td>3.97</td>\n",
       "      <td>3.81</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>01/05/2023</td>\n",
       "      <td>4.30</td>\n",
       "      <td>4.55</td>\n",
       "      <td>4.66</td>\n",
       "      <td>4.75</td>\n",
       "      <td>4.81</td>\n",
       "      <td>4.78</td>\n",
       "      <td>4.45</td>\n",
       "      <td>4.18</td>\n",
       "      <td>3.90</td>\n",
       "      <td>3.82</td>\n",
       "      <td>3.71</td>\n",
       "      <td>3.96</td>\n",
       "      <td>3.78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>01/06/2023</td>\n",
       "      <td>4.32</td>\n",
       "      <td>4.55</td>\n",
       "      <td>4.67</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.79</td>\n",
       "      <td>4.71</td>\n",
       "      <td>4.24</td>\n",
       "      <td>3.96</td>\n",
       "      <td>3.69</td>\n",
       "      <td>3.63</td>\n",
       "      <td>3.55</td>\n",
       "      <td>3.84</td>\n",
       "      <td>3.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>01/09/2023</td>\n",
       "      <td>4.37</td>\n",
       "      <td>4.58</td>\n",
       "      <td>4.70</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.83</td>\n",
       "      <td>4.69</td>\n",
       "      <td>4.19</td>\n",
       "      <td>3.93</td>\n",
       "      <td>3.66</td>\n",
       "      <td>3.60</td>\n",
       "      <td>3.53</td>\n",
       "      <td>3.83</td>\n",
       "      <td>3.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>01/10/2023</td>\n",
       "      <td>4.41</td>\n",
       "      <td>4.62</td>\n",
       "      <td>4.73</td>\n",
       "      <td>4.77</td>\n",
       "      <td>4.85</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.24</td>\n",
       "      <td>3.94</td>\n",
       "      <td>3.72</td>\n",
       "      <td>3.67</td>\n",
       "      <td>3.61</td>\n",
       "      <td>3.91</td>\n",
       "      <td>3.74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>01/11/2023</td>\n",
       "      <td>4.42</td>\n",
       "      <td>4.62</td>\n",
       "      <td>4.72</td>\n",
       "      <td>4.82</td>\n",
       "      <td>4.84</td>\n",
       "      <td>4.73</td>\n",
       "      <td>4.20</td>\n",
       "      <td>3.90</td>\n",
       "      <td>3.66</td>\n",
       "      <td>3.61</td>\n",
       "      <td>3.54</td>\n",
       "      <td>3.84</td>\n",
       "      <td>3.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>01/12/2023</td>\n",
       "      <td>4.57</td>\n",
       "      <td>4.59</td>\n",
       "      <td>4.66</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.76</td>\n",
       "      <td>4.66</td>\n",
       "      <td>4.12</td>\n",
       "      <td>3.79</td>\n",
       "      <td>3.53</td>\n",
       "      <td>3.48</td>\n",
       "      <td>3.43</td>\n",
       "      <td>3.73</td>\n",
       "      <td>3.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>01/13/2023</td>\n",
       "      <td>4.58</td>\n",
       "      <td>4.59</td>\n",
       "      <td>4.67</td>\n",
       "      <td>4.73</td>\n",
       "      <td>4.77</td>\n",
       "      <td>4.69</td>\n",
       "      <td>4.22</td>\n",
       "      <td>3.88</td>\n",
       "      <td>3.60</td>\n",
       "      <td>3.55</td>\n",
       "      <td>3.49</td>\n",
       "      <td>3.79</td>\n",
       "      <td>3.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>01/17/2023</td>\n",
       "      <td>4.60</td>\n",
       "      <td>4.63</td>\n",
       "      <td>4.71</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.82</td>\n",
       "      <td>4.67</td>\n",
       "      <td>4.18</td>\n",
       "      <td>3.86</td>\n",
       "      <td>3.60</td>\n",
       "      <td>3.57</td>\n",
       "      <td>3.53</td>\n",
       "      <td>3.81</td>\n",
       "      <td>3.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>01/18/2023</td>\n",
       "      <td>4.59</td>\n",
       "      <td>4.62</td>\n",
       "      <td>4.69</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.79</td>\n",
       "      <td>4.63</td>\n",
       "      <td>4.06</td>\n",
       "      <td>3.72</td>\n",
       "      <td>3.43</td>\n",
       "      <td>3.40</td>\n",
       "      <td>3.37</td>\n",
       "      <td>3.65</td>\n",
       "      <td>3.54</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>01/19/2023</td>\n",
       "      <td>4.69</td>\n",
       "      <td>4.66</td>\n",
       "      <td>4.71</td>\n",
       "      <td>4.74</td>\n",
       "      <td>4.79</td>\n",
       "      <td>4.65</td>\n",
       "      <td>4.09</td>\n",
       "      <td>3.76</td>\n",
       "      <td>3.48</td>\n",
       "      <td>3.43</td>\n",
       "      <td>3.39</td>\n",
       "      <td>3.69</td>\n",
       "      <td>3.57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>01/20/2023</td>\n",
       "      <td>4.69</td>\n",
       "      <td>4.64</td>\n",
       "      <td>4.72</td>\n",
       "      <td>4.75</td>\n",
       "      <td>4.80</td>\n",
       "      <td>4.68</td>\n",
       "      <td>4.14</td>\n",
       "      <td>3.83</td>\n",
       "      <td>3.56</td>\n",
       "      <td>3.51</td>\n",
       "      <td>3.48</td>\n",
       "      <td>3.77</td>\n",
       "      <td>3.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>01/23/2023</td>\n",
       "      <td>4.69</td>\n",
       "      <td>4.65</td>\n",
       "      <td>4.73</td>\n",
       "      <td>4.76</td>\n",
       "      <td>4.82</td>\n",
       "      <td>4.70</td>\n",
       "      <td>4.21</td>\n",
       "      <td>3.88</td>\n",
       "      <td>3.61</td>\n",
       "      <td>3.56</td>\n",
       "      <td>3.52</td>\n",
       "      <td>3.80</td>\n",
       "      <td>3.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>01/24/2023</td>\n",
       "      <td>4.70</td>\n",
       "      <td>4.67</td>\n",
       "      <td>4.72</td>\n",
       "      <td>4.75</td>\n",
       "      <td>4.84</td>\n",
       "      <td>4.70</td>\n",
       "      <td>4.12</td>\n",
       "      <td>3.86</td>\n",
       "      <td>3.58</td>\n",
       "      <td>3.52</td>\n",
       "      <td>3.46</td>\n",
       "      <td>3.73</td>\n",
       "      <td>3.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>01/25/2023</td>\n",
       "      <td>4.67</td>\n",
       "      <td>4.65</td>\n",
       "      <td>4.72</td>\n",
       "      <td>4.75</td>\n",
       "      <td>4.79</td>\n",
       "      <td>4.67</td>\n",
       "      <td>4.11</td>\n",
       "      <td>3.84</td>\n",
       "      <td>3.54</td>\n",
       "      <td>3.51</td>\n",
       "      <td>3.46</td>\n",
       "      <td>3.74</td>\n",
       "      <td>3.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>01/26/2023</td>\n",
       "      <td>4.61</td>\n",
       "      <td>4.65</td>\n",
       "      <td>4.71</td>\n",
       "      <td>4.76</td>\n",
       "      <td>4.79</td>\n",
       "      <td>4.68</td>\n",
       "      <td>4.17</td>\n",
       "      <td>3.88</td>\n",
       "      <td>3.58</td>\n",
       "      <td>3.54</td>\n",
       "      <td>3.49</td>\n",
       "      <td>3.75</td>\n",
       "      <td>3.62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>01/27/2023</td>\n",
       "      <td>4.61</td>\n",
       "      <td>4.64</td>\n",
       "      <td>4.73</td>\n",
       "      <td>4.76</td>\n",
       "      <td>4.81</td>\n",
       "      <td>4.68</td>\n",
       "      <td>4.19</td>\n",
       "      <td>3.90</td>\n",
       "      <td>3.62</td>\n",
       "      <td>3.58</td>\n",
       "      <td>3.52</td>\n",
       "      <td>3.77</td>\n",
       "      <td>3.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>01/30/2023</td>\n",
       "      <td>4.60</td>\n",
       "      <td>4.64</td>\n",
       "      <td>4.72</td>\n",
       "      <td>4.76</td>\n",
       "      <td>4.82</td>\n",
       "      <td>4.71</td>\n",
       "      <td>4.25</td>\n",
       "      <td>3.96</td>\n",
       "      <td>3.68</td>\n",
       "      <td>3.62</td>\n",
       "      <td>3.55</td>\n",
       "      <td>3.79</td>\n",
       "      <td>3.66</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Date  1 Mo  2 Mo  3 Mo  4 Mo  6 Mo  1 Yr  2 Yr  3 Yr  5 Yr  7 Yr  \\\n",
       "0   01/03/2023  4.17  4.42  4.53  4.70  4.77  4.72  4.40  4.18  3.94  3.89   \n",
       "1   01/04/2023  4.20  4.42  4.55  4.69  4.77  4.71  4.36  4.11  3.85  3.79   \n",
       "2   01/05/2023  4.30  4.55  4.66  4.75  4.81  4.78  4.45  4.18  3.90  3.82   \n",
       "3   01/06/2023  4.32  4.55  4.67  4.74  4.79  4.71  4.24  3.96  3.69  3.63   \n",
       "4   01/09/2023  4.37  4.58  4.70  4.74  4.83  4.69  4.19  3.93  3.66  3.60   \n",
       "5   01/10/2023  4.41  4.62  4.73  4.77  4.85  4.74  4.24  3.94  3.72  3.67   \n",
       "6   01/11/2023  4.42  4.62  4.72  4.82  4.84  4.73  4.20  3.90  3.66  3.61   \n",
       "7   01/12/2023  4.57  4.59  4.66  4.74  4.76  4.66  4.12  3.79  3.53  3.48   \n",
       "8   01/13/2023  4.58  4.59  4.67  4.73  4.77  4.69  4.22  3.88  3.60  3.55   \n",
       "9   01/17/2023  4.60  4.63  4.71  4.74  4.82  4.67  4.18  3.86  3.60  3.57   \n",
       "10  01/18/2023  4.59  4.62  4.69  4.74  4.79  4.63  4.06  3.72  3.43  3.40   \n",
       "11  01/19/2023  4.69  4.66  4.71  4.74  4.79  4.65  4.09  3.76  3.48  3.43   \n",
       "12  01/20/2023  4.69  4.64  4.72  4.75  4.80  4.68  4.14  3.83  3.56  3.51   \n",
       "13  01/23/2023  4.69  4.65  4.73  4.76  4.82  4.70  4.21  3.88  3.61  3.56   \n",
       "14  01/24/2023  4.70  4.67  4.72  4.75  4.84  4.70  4.12  3.86  3.58  3.52   \n",
       "15  01/25/2023  4.67  4.65  4.72  4.75  4.79  4.67  4.11  3.84  3.54  3.51   \n",
       "16  01/26/2023  4.61  4.65  4.71  4.76  4.79  4.68  4.17  3.88  3.58  3.54   \n",
       "17  01/27/2023  4.61  4.64  4.73  4.76  4.81  4.68  4.19  3.90  3.62  3.58   \n",
       "18  01/30/2023  4.60  4.64  4.72  4.76  4.82  4.71  4.25  3.96  3.68  3.62   \n",
       "\n",
       "    10 Yr  20 Yr  30 Yr  \n",
       "0    3.79   4.06   3.88  \n",
       "1    3.69   3.97   3.81  \n",
       "2    3.71   3.96   3.78  \n",
       "3    3.55   3.84   3.67  \n",
       "4    3.53   3.83   3.66  \n",
       "5    3.61   3.91   3.74  \n",
       "6    3.54   3.84   3.67  \n",
       "7    3.43   3.73   3.56  \n",
       "8    3.49   3.79   3.61  \n",
       "9    3.53   3.81   3.64  \n",
       "10   3.37   3.65   3.54  \n",
       "11   3.39   3.69   3.57  \n",
       "12   3.48   3.77   3.66  \n",
       "13   3.52   3.80   3.69  \n",
       "14   3.46   3.73   3.62  \n",
       "15   3.46   3.74   3.62  \n",
       "16   3.49   3.75   3.62  \n",
       "17   3.52   3.77   3.64  \n",
       "18   3.55   3.79   3.66  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_clean = df_rates[0].drop(columns=['20 YR', '30 YR', 'Extrapolation Factor',\n",
    "       '8 WEEKS BANK DISCOUNT', 'COUPON EQUIVALENT', '17 WEEKS BANK DISCOUNT',\n",
    "       'COUPON EQUIVALENT.1', '52 WEEKS BANK DISCOUNT', 'COUPON EQUIVALENT.2'])\n",
    "df_clean"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "jbook",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.12"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "814dd97c9b1192d9c44b0b7e4745a589d51898d104c06e3c8aedab4dae542697"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
