*In[1]:*
import numpy as np
import pandas as pd*In[4]:*
from numpy.random import randn
df=pd.DataFrame(randn(5,4),['A','B','C','D','E'],['W','X','Y','Z'])*In[5]:*
df*Out[5]:*
[cols=",,,,",options="header",] |=== | |W |X |Y |Z |A |-0.469724 |0.443672 |-1.009412 |0.118840 |B |0.152000 |-1.015101 |0.292788 |-0.179682 |C |-0.650724 |0.098453 |-2.513389 |-0.636284 |D |2.248024 |0.481968 |-0.944033 |-0.107866 |E |-0.590276 |0.964199 |-0.248336 |0.777561 |===
*In[6]:*
df.reset_index()*Out[6]:*
[cols=",,,,,",options="header",] |=== | |index |W |X |Y |Z |0 |A |-0.469724 |0.443672 |-1.009412 |0.118840 |1 |B |0.152000 |-1.015101 |0.292788 |-0.179682 |2 |C |-0.650724 |0.098453 |-2.513389 |-0.636284 |3 |D |2.248024 |0.481968 |-0.944033 |-0.107866 |4 |E |-0.590276 |0.964199 |-0.248336 |0.777561 |===
*In[7]:*
df*Out[7]:*
[cols=",,,,",options="header",] |=== | |W |X |Y |Z |A |-0.469724 |0.443672 |-1.009412 |0.118840 |B |0.152000 |-1.015101 |0.292788 |-0.179682 |C |-0.650724 |0.098453 |-2.513389 |-0.636284 |D |2.248024 |0.481968 |-0.944033 |-0.107866 |E |-0.590276 |0.964199 |-0.248336 |0.777561 |===
*In[8]:*
newind = 'CA NY WR OR CO'.split()*In[9]:*
newind*Out[9]:* ----['CA', 'NY', 'WR', 'OR', 'CO']----
*In[10]:*
df['States']=newind*In[11]:*
df.set_index('States')*Out[11]:*
[cols=",,,,",options="header",] |=== | |W |X |Y |Z |States | | | | |CA |-0.469724 |0.443672 |-1.009412 |0.118840 |NY |0.152000 |-1.015101 |0.292788 |-0.179682 |WR |-0.650724 |0.098453 |-2.513389 |-0.636284 |OR |2.248024 |0.481968 |-0.944033 |-0.107866 |CO |-0.590276 |0.964199 |-0.248336 |0.777561 |===
*In[12]:*
#Index levels*In[23]:*
outside = ['G1','G1','G1','G2','G2','G2']
inside =[1,2,3,1,2,3]
hier_index=list(zip(outside,inside))
hier_index=pd.MultiIndex.from_tuples(hier_index)*In[24]:*
outside*Out[24]:* ----['G1', 'G1', 'G1', 'G2', 'G2', 'G2']----
*In[25]:*
inside*Out[25]:* ----[1, 2, 3, 1, 2, 3]----
*In[26]:*
list(zip(outside,inside))*Out[26]:* ----[('G1', 1), ('G1', 2), ('G1', 3), ('G2', 1), ('G2', 2), ('G2', 3)]----
*In[27]:*
hier_index*Out[27]:* ----MultiIndex([('G1', 1), ('G1', 2), ('G1', 3), ('G2', 1), ('G2', 2), ('G2', 3)], )----
*In[21]:*
df=pd.DataFrame(randn(6,2),hier_index,['A','B'])*In[22]:*
df*Out[22]:*
[cols=",,,",options="header",] |=== | | |A |B |G1 |1 |-0.281696 |-0.048233 | |2 |0.709150 |-0.702492 | |3 |-1.534195 |-0.088502 |G2 |1 |0.871283 |-1.122875 | |2 |-0.838875 |-0.007073 | |3 |-0.924876 |-0.509193 |===
*In[30]:*
df.index.names['Groups','Number']*Out[30]:*
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-30-6804b513d92d> in <module>
----> 1 df.index.names['Groups','Number']
~/miniconda3/lib/python3.8/site-packages/pandas/core/indexes/frozen.py in __getitem__(self, n)
67 if isinstance(n, slice):
68 return type(self)(super().__getitem__(n))
---> 69 return super().__getitem__(n)
70
71 def __radd__(self, other):
TypeError: list indices must be integers or slices, not tuple
*In[31]:*
df*Out[31]:*
[cols=",,,",options="header",] |=== | | |A |B |G1 |1 |-0.281696 |-0.048233 | |2 |0.709150 |-0.702492 | |3 |-1.534195 |-0.088502 |G2 |1 |0.871283 |-1.122875 | |2 |-0.838875 |-0.007073 | |3 |-0.924876 |-0.509193 |===
*In[32]:*
df.loc['G1']*Out[32]:*
[cols=",,",options="header",] |=== | |A |B |1 |-0.281696 |-0.048233 |2 |0.709150 |-0.702492 |3 |-1.534195 |-0.088502 |===
*In[40]:*
df.loc['G1'].loc[1]['B']*Out[40]:* -----0.04823307471528516----
*In[36]:*
df.loc['G2'].loc[3]['B']*Out[36]:* -----0.5091927179301485----
*In[ ]:*