Я хотел бы увеличить (= добавить новый индекс в) мультииндексный фрейм данных, добавив другой фрейм данных.
Вот два фрейма данных:
DF1 - pop:
mi = pd.MultiIndex.from_tuples([('in','a'),('in','b'),('v','t')],names=['Scope','Name'])
mc = pd.MultiIndex.from_tuples([(0,1),(0,2),(0,3)],names=['Gen','N'])
pop = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],index=mi,columns=mc)
, который дает:
Gen 0
N 1 2 3
Scope Name
in a 1 2 3
b 4 5 6
v t 7 8 9
DF2 - res:
mi = pd.MultiIndex.from_tuples([('in','a'),('in','b'),('res','c'),('res','d')],names=['Scope','Name'])
res = pd.DataFrame([[1,2,3],[4,5,6],[10,20,30],[11,22,33]],index=mi,columns=[1,2,3])
, который дает:
1 2 3
Scope Name
in a 1 2 3
b 4 5 6
res c 10 20 30
d 11 22 33
Я хочу добавить 'res' изres (извините за неправильное именование ...), чтобы выскочить (где индекс 'res' все еще не существует).Я попробовал следующее безуспешно:
pop[0].loc['res'] = res['res']
pop.loc['res',0] = res['res']
Оба привели к KeyError: 'res'
.Я также проверил что-то с pd.concat или append, но с плохими результатами (и я хотел бы не определять новый DataFrame, а увеличивать оригинальную популярность).Заранее благодарим за помощь.
ВОЗМОЖНОЕ РЕШЕНИЕ
Мне удалось получить нужный мне фрейм данных, но не «на месте»:
mi_col = pd.concat([res.loc['res']],keys=[0],axis=1) #Select 'res' index and add the '0' level to column
mi_ind = pd.concat([mi_col],keys=['res']) #Re-adding the 'res' level to index (drop during the previous selection)
pop = pd.concat([pop, mi_ind]) #Concatenating the 2 DataFrame into a new one
IЯ все еще заинтересован в решении, которое не генерирует новый DataFrame.