Created
January 6, 2013 03:35
-
-
Save anonymous/4465051 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "metadata": { | |
| "name": "multiindex_problem" | |
| }, | |
| "nbformat": 3, | |
| "nbformat_minor": 0, | |
| "worksheets": [ | |
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "import pandas as pd\n", | |
| "import numpy as np\n", | |
| "import sys\n", | |
| "\n", | |
| "print \"\\npandas version:\",pd.__version__" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "\n", | |
| "pandas version: 0.10.0\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 20 | |
| }, | |
| { | |
| "cell_type": "raw", | |
| "metadata": {}, | |
| "source": [ | |
| "define functions to generate 2 and 3 level multi-index based dataframes" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "def gen_l3_mi(nchs,ndets,ntimes):\n", | |
| " \"generate a 3-level multi-index dataframe\"\n", | |
| " c = ['c'+str(i) for i in range(1,nchs+1)]\n", | |
| " det = ['d'+str(i) for i in range(1,ndets+1)]\n", | |
| " times = ['t'+str(i) for i in range(1,ntimes+1)]\n", | |
| " ind = []\n", | |
| " for ch in c:\n", | |
| " for d in det:\n", | |
| " for t in times:\n", | |
| " ind.append((ch,d,t))\n", | |
| " index = pd.MultiIndex.from_tuples(ind)\n", | |
| " return pd.DataFrame(np.random.randn(nchs*ndets*ntimes,3), \n", | |
| " columns=['A','B','C'],index=index)" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 21 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "def gen_l2_mi(nchs,ndets):\n", | |
| " \"generate a 2-level multi-index dataframe\"\n", | |
| " c = ['c'+str(i) for i in range(1,nchs+1)]\n", | |
| " det = ['d'+str(i) for i in range(1,ndets+1)]\n", | |
| " ind = []\n", | |
| " for ch in c:\n", | |
| " for d in det:\n", | |
| " ind.append((ch,d))\n", | |
| " index = pd.MultiIndex.from_tuples(ind)\n", | |
| " return pd.DataFrame(np.random.randn(nchs*ndets,3), \n", | |
| " columns=['A','B','C'],index=index)" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 22 | |
| }, | |
| { | |
| "cell_type": "raw", | |
| "metadata": {}, | |
| "source": [ | |
| "example of 2-level frame" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "gen_l2_mi(2,3)" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "html": [ | |
| "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th>A</th>\n", | |
| " <th>B</th>\n", | |
| " <th>C</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <td rowspan=\"3\" valign=\"top\"><strong>c1</strong></td>\n", | |
| " <td><strong>d1</strong></td>\n", | |
| " <td>-0.313954</td>\n", | |
| " <td> 0.342877</td>\n", | |
| " <td>-0.221101</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>d2</strong></td>\n", | |
| " <td>-0.345676</td>\n", | |
| " <td> 1.169511</td>\n", | |
| " <td> 1.904327</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>d3</strong></td>\n", | |
| " <td> 1.480474</td>\n", | |
| " <td>-0.721313</td>\n", | |
| " <td> 0.053794</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td rowspan=\"3\" valign=\"top\"><strong>c2</strong></td>\n", | |
| " <td><strong>d1</strong></td>\n", | |
| " <td>-0.324620</td>\n", | |
| " <td>-1.462995</td>\n", | |
| " <td> 1.242864</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>d2</strong></td>\n", | |
| " <td>-0.549502</td>\n", | |
| " <td> 0.671936</td>\n", | |
| " <td> 1.502489</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>d3</strong></td>\n", | |
| " <td> 1.805416</td>\n", | |
| " <td> 0.881110</td>\n", | |
| " <td> 3.459964</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "output_type": "pyout", | |
| "prompt_number": 23, | |
| "text": [ | |
| " A B C\n", | |
| "c1 d1 -0.313954 0.342877 -0.221101\n", | |
| " d2 -0.345676 1.169511 1.904327\n", | |
| " d3 1.480474 -0.721313 0.053794\n", | |
| "c2 d1 -0.324620 -1.462995 1.242864\n", | |
| " d2 -0.549502 0.671936 1.502489\n", | |
| " d3 1.805416 0.881110 3.459964" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 23 | |
| }, | |
| { | |
| "cell_type": "raw", | |
| "metadata": {}, | |
| "source": [ | |
| "example of 3-level frame" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "gen_l3_mi(2,3,2)" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "html": [ | |
| "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th></th>\n", | |
| " <th>A</th>\n", | |
| " <th>B</th>\n", | |
| " <th>C</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <td rowspan=\"6\" valign=\"top\"><strong>c1</strong></td>\n", | |
| " <td rowspan=\"2\" valign=\"top\"><strong>d1</strong></td>\n", | |
| " <td><strong>t1</strong></td>\n", | |
| " <td> 0.008900</td>\n", | |
| " <td> 0.823869</td>\n", | |
| " <td> 1.738161</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t2</strong></td>\n", | |
| " <td> 1.057663</td>\n", | |
| " <td> 0.399788</td>\n", | |
| " <td>-0.791813</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td rowspan=\"2\" valign=\"top\"><strong>d2</strong></td>\n", | |
| " <td><strong>t1</strong></td>\n", | |
| " <td> 1.843533</td>\n", | |
| " <td> 0.584357</td>\n", | |
| " <td>-0.825108</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t2</strong></td>\n", | |
| " <td>-1.064736</td>\n", | |
| " <td> 1.330875</td>\n", | |
| " <td> 1.014513</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td rowspan=\"2\" valign=\"top\"><strong>d3</strong></td>\n", | |
| " <td><strong>t1</strong></td>\n", | |
| " <td> 0.357935</td>\n", | |
| " <td> 0.485275</td>\n", | |
| " <td>-0.437894</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t2</strong></td>\n", | |
| " <td> 1.155996</td>\n", | |
| " <td>-0.119493</td>\n", | |
| " <td>-0.184729</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td rowspan=\"6\" valign=\"top\"><strong>c2</strong></td>\n", | |
| " <td rowspan=\"2\" valign=\"top\"><strong>d1</strong></td>\n", | |
| " <td><strong>t1</strong></td>\n", | |
| " <td> 0.523216</td>\n", | |
| " <td>-1.581680</td>\n", | |
| " <td>-1.339100</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t2</strong></td>\n", | |
| " <td>-0.492205</td>\n", | |
| " <td>-0.435085</td>\n", | |
| " <td>-0.068826</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td rowspan=\"2\" valign=\"top\"><strong>d2</strong></td>\n", | |
| " <td><strong>t1</strong></td>\n", | |
| " <td>-1.287988</td>\n", | |
| " <td> 0.017792</td>\n", | |
| " <td>-0.079597</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t2</strong></td>\n", | |
| " <td>-2.558944</td>\n", | |
| " <td>-1.181913</td>\n", | |
| " <td> 0.215015</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td rowspan=\"2\" valign=\"top\"><strong>d3</strong></td>\n", | |
| " <td><strong>t1</strong></td>\n", | |
| " <td> 0.402463</td>\n", | |
| " <td> 1.628911</td>\n", | |
| " <td>-0.092130</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t2</strong></td>\n", | |
| " <td>-0.673550</td>\n", | |
| " <td> 1.391845</td>\n", | |
| " <td>-0.026922</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "output_type": "pyout", | |
| "prompt_number": 24, | |
| "text": [ | |
| " A B C\n", | |
| "c1 d1 t1 0.008900 0.823869 1.738161\n", | |
| " t2 1.057663 0.399788 -0.791813\n", | |
| " d2 t1 1.843533 0.584357 -0.825108\n", | |
| " t2 -1.064736 1.330875 1.014513\n", | |
| " d3 t1 0.357935 0.485275 -0.437894\n", | |
| " t2 1.155996 -0.119493 -0.184729\n", | |
| "c2 d1 t1 0.523216 -1.581680 -1.339100\n", | |
| " t2 -0.492205 -0.435085 -0.068826\n", | |
| " d2 t1 -1.287988 0.017792 -0.079597\n", | |
| " t2 -2.558944 -1.181913 0.215015\n", | |
| " d3 t1 0.402463 1.628911 -0.092130\n", | |
| " t2 -0.673550 1.391845 -0.026922" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 24 | |
| }, | |
| { | |
| "cell_type": "raw", | |
| "metadata": {}, | |
| "source": [ | |
| "indexing the first 2 levels works fine with these:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "gen_l2_mi(2,3).ix['c1','d3']" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "pyout", | |
| "prompt_number": 25, | |
| "text": [ | |
| "A -0.374957\n", | |
| "B 1.163482\n", | |
| "C -1.436960\n", | |
| "Name: (c1, d3)" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 25 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "gen_l3_mi(2,3,2).ix['c1','d3']" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "html": [ | |
| "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>A</th>\n", | |
| " <th>B</th>\n", | |
| " <th>C</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <td><strong>t1</strong></td>\n", | |
| " <td>-0.933814</td>\n", | |
| " <td>-0.194486</td>\n", | |
| " <td>-1.247901</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t2</strong></td>\n", | |
| " <td>-1.737364</td>\n", | |
| " <td> 0.126783</td>\n", | |
| " <td>-1.676366</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "output_type": "pyout", | |
| "prompt_number": 26, | |
| "text": [ | |
| " A B C\n", | |
| "t1 -0.933814 -0.194486 -1.247901\n", | |
| "t2 -1.737364 0.126783 -1.676366" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 26 | |
| }, | |
| { | |
| "cell_type": "raw", | |
| "metadata": {}, | |
| "source": [ | |
| "this works fine until the size of the first two levels reach 9,9, even with the third level getting larger than 10:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "gen_l2_mi(9,9).ix['c9','d9']" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "pyout", | |
| "prompt_number": 27, | |
| "text": [ | |
| "A 0.335086\n", | |
| "B 0.039880\n", | |
| "C 0.082347\n", | |
| "Name: (c9, d9)" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 27 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "gen_l3_mi(9,9,12).ix['c9','d5']" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "html": [ | |
| "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>A</th>\n", | |
| " <th>B</th>\n", | |
| " <th>C</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <td><strong>t1</strong></td>\n", | |
| " <td>-2.628023</td>\n", | |
| " <td> 1.238278</td>\n", | |
| " <td>-1.261069</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t2</strong></td>\n", | |
| " <td> 0.227153</td>\n", | |
| " <td> 1.598195</td>\n", | |
| " <td> 1.813323</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t3</strong></td>\n", | |
| " <td>-1.208046</td>\n", | |
| " <td>-1.225411</td>\n", | |
| " <td>-0.506603</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t4</strong></td>\n", | |
| " <td>-0.404405</td>\n", | |
| " <td>-0.404879</td>\n", | |
| " <td> 0.303644</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t5</strong></td>\n", | |
| " <td> 1.732944</td>\n", | |
| " <td>-0.783047</td>\n", | |
| " <td>-0.168029</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t6</strong></td>\n", | |
| " <td>-0.564203</td>\n", | |
| " <td> 0.665243</td>\n", | |
| " <td> 0.726210</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t7</strong></td>\n", | |
| " <td> 1.238463</td>\n", | |
| " <td> 0.602998</td>\n", | |
| " <td>-0.075746</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t8</strong></td>\n", | |
| " <td> 0.834358</td>\n", | |
| " <td>-1.910082</td>\n", | |
| " <td>-0.560975</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t9</strong></td>\n", | |
| " <td> 1.025414</td>\n", | |
| " <td>-0.564223</td>\n", | |
| " <td>-0.707206</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t10</strong></td>\n", | |
| " <td>-3.086643</td>\n", | |
| " <td> 1.612791</td>\n", | |
| " <td>-1.820178</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t11</strong></td>\n", | |
| " <td>-0.474348</td>\n", | |
| " <td> 1.348884</td>\n", | |
| " <td>-1.031201</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <td><strong>t12</strong></td>\n", | |
| " <td>-0.332214</td>\n", | |
| " <td> 0.027670</td>\n", | |
| " <td>-1.704551</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "output_type": "pyout", | |
| "prompt_number": 28, | |
| "text": [ | |
| " A B C\n", | |
| "t1 -2.628023 1.238278 -1.261069\n", | |
| "t2 0.227153 1.598195 1.813323\n", | |
| "t3 -1.208046 -1.225411 -0.506603\n", | |
| "t4 -0.404405 -0.404879 0.303644\n", | |
| "t5 1.732944 -0.783047 -0.168029\n", | |
| "t6 -0.564203 0.665243 0.726210\n", | |
| "t7 1.238463 0.602998 -0.075746\n", | |
| "t8 0.834358 -1.910082 -0.560975\n", | |
| "t9 1.025414 -0.564223 -0.707206\n", | |
| "t10 -3.086643 1.612791 -1.820178\n", | |
| "t11 -0.474348 1.348884 -1.031201\n", | |
| "t12 -0.332214 0.027670 -1.704551" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 28 | |
| }, | |
| { | |
| "cell_type": "raw", | |
| "metadata": {}, | |
| "source": [ | |
| "but when one of the first two levels reaches 10, this indexing does not work anymore for the 3-level deep multi-index dataframe:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "try:\n", | |
| " gen_l3_mi(10,9,9).ix['c9','d9']\n", | |
| "except KeyError as e:\n", | |
| " print e" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "u'no item named d9'\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 29 | |
| }, | |
| { | |
| "cell_type": "raw", | |
| "metadata": {}, | |
| "source": [ | |
| "while the 2-level index has no problem with that:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "gen_l2_mi(10,9).ix['c9','d5']" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "pyout", | |
| "prompt_number": 30, | |
| "text": [ | |
| "A -0.195208\n", | |
| "B -1.696686\n", | |
| "C -0.784776\n", | |
| "Name: (c9, d5)" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 30 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "#### now comes the weird part: the 3-level indexing works again, when the 3rd level size is being indexed as well:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "try:\n", | |
| " print gen_l3_mi(10,9,9).ix['c9','d9','t2']\n", | |
| "except KeyError as e:\n", | |
| " print e" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "A 0.502935\n", | |
| "B -0.126213\n", | |
| "C -1.574937\n", | |
| "Name: (c9, d9, t2)\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 31 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "### and even weirder (at least the error message:) when indexing the 3rd level to a higher index than available, the 2nd-level index is being announced as not available:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "try:\n", | |
| " print gen_l3_mi(10,9,3).ix['c9','d9','t4']\n", | |
| "except KeyError as e:\n", | |
| " print e" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "u'no item named d9'\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 32 | |
| }, | |
| { | |
| "cell_type": "raw", | |
| "metadata": {}, | |
| "source": [ | |
| "and this does not change when going back to single digit (i.e. < 10) index sizes:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "try:\n", | |
| " print gen_l3_mi(9,9,3).ix['c9','d9','t4']\n", | |
| "except KeyError as e:\n", | |
| " print e" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "u'no item named d9'\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 33 | |
| }, | |
| { | |
| "cell_type": "raw", | |
| "metadata": {}, | |
| "source": [ | |
| "When reducing level2 1 under being indexed, the behaviour that the previous index is being announced as the culprit, does not happen:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "try:\n", | |
| " print gen_l3_mi(9,8,3).ix['c9','d9','t4']\n", | |
| "except KeyError as e:\n", | |
| " print e" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "u'no item named d9'\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 34 | |
| }, | |
| { | |
| "cell_type": "raw", | |
| "metadata": {}, | |
| "source": [ | |
| "Using df.sortlevel, the indexing finally works:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "try:\n", | |
| " print gen_l3_mi(10,9,9).sortlevel(0).ix['c9','d9']\n", | |
| "except KeyError as e:\n", | |
| " print e" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| " A B C\n", | |
| "t1 -0.614408 1.141708 0.635459\n", | |
| "t2 -0.893975 1.855616 -0.284339\n", | |
| "t3 -0.220077 0.257822 -0.804056\n", | |
| "t4 0.072627 -1.292175 -0.310809\n", | |
| "t5 -0.071669 -0.178752 -2.647866\n", | |
| "t6 -0.541183 -2.360437 -1.792694\n", | |
| "t7 -0.831846 -0.490298 0.648153\n", | |
| "t8 1.427516 2.063302 1.050923\n", | |
| "t9 -0.718621 1.216597 1.039047\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 35 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "print gen_l3_mi(15,13,12).sortlevel(0).ix[('c9','d9'),'A']" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "stream": "stdout", | |
| "text": [ | |
| "t1 0.906801\n", | |
| "t10 -0.951765\n", | |
| "t11 -1.538490\n", | |
| "t12 0.345519\n", | |
| "t2 -1.263581\n", | |
| "t3 1.427725\n", | |
| "t4 -0.437448\n", | |
| "t5 1.687768\n", | |
| "t6 1.636617\n", | |
| "t7 -0.484136\n", | |
| "t8 0.260679\n", | |
| "t9 0.861448\n", | |
| "Name: A\n" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 36 | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 36 | |
| } | |
| ], | |
| "metadata": {} | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment