import pandas as pd
import numpy as np
from numpy.random import randn as randn
from numpy.random import randint as randint
from datetime import datetime
obs1 = [ob if ob > 0 else ob *-1 for ob in randn(10)*100]
obs2 = [randint(1000) for i in range(10)]
labels = ['A12', 'B12', 'A12', 'B12', 'A12','B12', 'A12','B12', 'B12', 'C12']
dates = [datetime(2012, 11, i) for i in range(1,11)]
dates[0] = dates[1]
dates[2] = dates[3]
dates[4] = dates[5]
dates[6] = dates[7]
dates[8] = dates[9]
m_idx = pd.MultiIndex.from_tuples(zip(dates, labels), names=['date', 'label'])
dt = datetime(2012,11,7)
dt2 = datetime(2012,12, 8)
end_dt = [dt, dt2, dt, dt2, dt, dt2, dt, dt2,dt2, datetime(2013, 1, 9)]
data_dict = {'obs1':obs1, 'obs2':obs2, 'end_dt':end_dt}
df = pd.DataFrame(data_dict, index=m_idx)
Can anyone suggest a way to apply a function to a MultiIndex DataFrame so that will look at the first level of the DataFrame apply a function and then return a row?
Aquil H. Abdullah