У меня есть набор данных (df2), который выглядит следующим образом:
total_n
ind_n4 year city_code
9 2003 a 236
2004 a 520
54 2002 b 167
2004 b 997
2005 b 476
2006 b 742
Пример набора данных:
df = pd.DataFrame( {'year':[2003,2004,2002,2004,2005,2006],
'city_code':['a']*2+['b']*4,
'total_tax':pd.np.random.randint(100,1000,6)},
index=pd.Index(data=[9]*2+[54]*4,name='ind_n4'))
df1 = df.set_index('year',append=True)
df2 = df1.set_index('city_code',append=True)
И ВЫХОД, который я ищу, представляет собой таблицу баланса, которая выглядитчто-то вроде этого:
total_n
ind_n4 city_code year
9 a 2002 0
2003 236
2004 520
2005 0
2006 0
b 2002 0
2003 0
2004 0
2005 0
2006 0
54 a 2002 0
2003 0
2004 0
2005 0
2006 0
b 2002 167
2003 0
2004 997
2005 476
2006 742
Для этого я использовал эту методологию, которая была предложена для довольно похожего примера из Python Pandas: баланс несбалансированного набора данных (для панельного анализа) :
df_balanced = (df.set_index('year',append=True)
.reindex(pd.MultiIndex.from_product([df.index.unique(),
range(df.year.min(),df.year.max()+1)],
names=['id_inf','year']))
.reset_index(level=1))
Но, когда я использую этот код, я получаю сообщение об ошибке: NotImplementedError: isna не определена для MultiIndex
Большое спасибо за вашпомощь