In [ ]:
'''
series:
index
unstack
dataframes:
index.names = ...
columns.names = ...
swaplevel
sortlevel
sum(level='Temp', axis=1)
'''
In [2]:
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from numpy.random import randn
In [10]:
# different levels of indexes
ser = Series(randn(6), index=[[1,1,1,2,2,2],['a','b','c','a','b','c']])
ser
Out[10]:
In [6]:
ser.index
Out[6]:
In [15]:
# select the first object from outer index
ser[1]
Out[15]:
In [16]:
# select all rows with inner index 'a'
ser[:,'a']
Out[16]:
In [18]:
# create a dataframe from multilevel index series object
# innner index become columns
# outer index become rows
df = ser.unstack()
df
Out[18]:
In [20]:
# pass 2 lists to index and 2 lists to column
df2 = DataFrame(np.arange(16).reshape(4,4), index=[['a','a','b','b'],[1,2,1,2]],
columns=[['NY','NY','LA','SF'],['cold','hot','hot','cold']])
df2
Out[20]:
In [22]:
# name index levels
df2.index.names = ['Index 1', 'Index 2']
df2.columns.names = ['Cities', 'Temp']
df2
Out[22]:
In [26]:
# interchange index levels using axis=1, by default will swap row indexes
df2.swaplevel('Cities','Temp',axis=1)
Out[26]:
In [27]:
# sort levels, 1 represents inner index and 0 represents outer index in rows
df2.sortlevel(1)
Out[27]:
In [28]:
df2
Out[28]:
In [30]:
# compute on a specific index level, for example Temp
# this will sum the 2 'hot' columns together and the 2 'cold' columns together
df2.sum(level='Temp', axis=1)
Out[30]:
In [ ]: