Created
January 8, 2013 08:06
-
-
Save anonymous/4482106 to your computer and use it in GitHub Desktop.
This file contains 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": "index.levels 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": 1 | |
}, | |
{ | |
"cell_type": "raw", | |
"metadata": {}, | |
"source": [ | |
"define function to generate 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": 2 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"df = gen_l3_mi(1,2,5)\n", | |
"df" | |
], | |
"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=\"10\" valign=\"top\"><strong>c1</strong></td>\n", | |
" <td rowspan=\"5\" valign=\"top\"><strong>d1</strong></td>\n", | |
" <td><strong>t1</strong></td>\n", | |
" <td>-0.268105</td>\n", | |
" <td> 1.063887</td>\n", | |
" <td>-1.959510</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t2</strong></td>\n", | |
" <td>-0.887410</td>\n", | |
" <td> 0.614846</td>\n", | |
" <td>-0.448357</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t3</strong></td>\n", | |
" <td> 0.587298</td>\n", | |
" <td>-0.037883</td>\n", | |
" <td>-0.252485</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t4</strong></td>\n", | |
" <td>-0.415601</td>\n", | |
" <td> 1.203818</td>\n", | |
" <td>-0.362764</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t5</strong></td>\n", | |
" <td>-0.596451</td>\n", | |
" <td>-0.179422</td>\n", | |
" <td>-0.256425</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td rowspan=\"5\" valign=\"top\"><strong>d2</strong></td>\n", | |
" <td><strong>t1</strong></td>\n", | |
" <td>-0.712503</td>\n", | |
" <td>-0.635871</td>\n", | |
" <td>-1.642539</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t2</strong></td>\n", | |
" <td>-1.102127</td>\n", | |
" <td> 1.446910</td>\n", | |
" <td> 1.628707</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t3</strong></td>\n", | |
" <td> 0.700126</td>\n", | |
" <td>-0.211521</td>\n", | |
" <td> 0.306729</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t4</strong></td>\n", | |
" <td> 0.236699</td>\n", | |
" <td>-1.327817</td>\n", | |
" <td>-0.226565</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t5</strong></td>\n", | |
" <td>-0.644808</td>\n", | |
" <td>-0.262662</td>\n", | |
" <td> 0.197099</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"output_type": "pyout", | |
"prompt_number": 3, | |
"text": [ | |
" A B C\n", | |
"c1 d1 t1 -0.268105 1.063887 -1.959510\n", | |
" t2 -0.887410 0.614846 -0.448357\n", | |
" t3 0.587298 -0.037883 -0.252485\n", | |
" t4 -0.415601 1.203818 -0.362764\n", | |
" t5 -0.596451 -0.179422 -0.256425\n", | |
" d2 t1 -0.712503 -0.635871 -1.642539\n", | |
" t2 -1.102127 1.446910 1.628707\n", | |
" t3 0.700126 -0.211521 0.306729\n", | |
" t4 0.236699 -1.327817 -0.226565\n", | |
" t5 -0.644808 -0.262662 0.197099" | |
] | |
} | |
], | |
"prompt_number": 3 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"df['D']=0.0" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 4 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"df.D.ix['c1','d1'].ix['t3':'t5'] = 1\n", | |
"df" | |
], | |
"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", | |
" <th>D</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td rowspan=\"10\" valign=\"top\"><strong>c1</strong></td>\n", | |
" <td rowspan=\"5\" valign=\"top\"><strong>d1</strong></td>\n", | |
" <td><strong>t1</strong></td>\n", | |
" <td>-0.268105</td>\n", | |
" <td> 1.063887</td>\n", | |
" <td>-1.959510</td>\n", | |
" <td> 0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t2</strong></td>\n", | |
" <td>-0.887410</td>\n", | |
" <td> 0.614846</td>\n", | |
" <td>-0.448357</td>\n", | |
" <td> 0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t3</strong></td>\n", | |
" <td> 0.587298</td>\n", | |
" <td>-0.037883</td>\n", | |
" <td>-0.252485</td>\n", | |
" <td> 1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t4</strong></td>\n", | |
" <td>-0.415601</td>\n", | |
" <td> 1.203818</td>\n", | |
" <td>-0.362764</td>\n", | |
" <td> 1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t5</strong></td>\n", | |
" <td>-0.596451</td>\n", | |
" <td>-0.179422</td>\n", | |
" <td>-0.256425</td>\n", | |
" <td> 1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td rowspan=\"5\" valign=\"top\"><strong>d2</strong></td>\n", | |
" <td><strong>t1</strong></td>\n", | |
" <td>-0.712503</td>\n", | |
" <td>-0.635871</td>\n", | |
" <td>-1.642539</td>\n", | |
" <td> 0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t2</strong></td>\n", | |
" <td>-1.102127</td>\n", | |
" <td> 1.446910</td>\n", | |
" <td> 1.628707</td>\n", | |
" <td> 0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t3</strong></td>\n", | |
" <td> 0.700126</td>\n", | |
" <td>-0.211521</td>\n", | |
" <td> 0.306729</td>\n", | |
" <td> 0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t4</strong></td>\n", | |
" <td> 0.236699</td>\n", | |
" <td>-1.327817</td>\n", | |
" <td>-0.226565</td>\n", | |
" <td> 0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td><strong>t5</strong></td>\n", | |
" <td>-0.644808</td>\n", | |
" <td>-0.262662</td>\n", | |
" <td> 0.197099</td>\n", | |
" <td> 0</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"output_type": "pyout", | |
"prompt_number": 5, | |
"text": [ | |
" A B C D\n", | |
"c1 d1 t1 -0.268105 1.063887 -1.959510 0\n", | |
" t2 -0.887410 0.614846 -0.448357 0\n", | |
" t3 0.587298 -0.037883 -0.252485 1\n", | |
" t4 -0.415601 1.203818 -0.362764 1\n", | |
" t5 -0.596451 -0.179422 -0.256425 1\n", | |
" d2 t1 -0.712503 -0.635871 -1.642539 0\n", | |
" t2 -1.102127 1.446910 1.628707 0\n", | |
" t3 0.700126 -0.211521 0.306729 0\n", | |
" t4 0.236699 -1.327817 -0.226565 0\n", | |
" t5 -0.644808 -0.262662 0.197099 0" | |
] | |
} | |
], | |
"prompt_number": 5 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"grouped = df.groupby('D')" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 6 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"for i,j in grouped:\n", | |
" print 'D:',i\n", | |
" print 'Actual index[2]:',j.index[0][2]\n", | |
" print 'First element of levels[2]:',j.index.levels[2][0]" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"D: 0.0\n", | |
"Actual index[2]: t1\n", | |
"First element of levels[2]: t1\n", | |
"D: 1.0\n", | |
"Actual index[2]: t3\n", | |
"First element of levels[2]: t1\n" | |
] | |
} | |
], | |
"prompt_number": 7 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 7 | |
} | |
], | |
"metadata": {} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment