python - Calculate Column in Pandas between Single Index and MultiIndex DataFrames -


say have following multiindex empty dataframe:

>>> df1=pd.dataframe(data=[['a',1], ['a',2], ['b',1], ['b',2]], columns=['key1','key2']).set_index(['key1','key2']) >>> print df1 empty dataframe columns: [] index: [(a, 1), (a, 2), (b, 1), (b, 2)] 

and have following dataframe contains data:

>>> data=pd.dataframe(index=['a','b'], data=[11,22], columns=['var1']) >>> data.index.name='key1' >>> print data       var1 key1             11 b       22 

given common index named "key1" in both dataframes, think calculate variable equal var1 in empty dataframe doing following:

>>> df1['testvar']=data['var1'] >>> print df1            testvar key1 key2             1         nan      2         nan b    1         nan      2         nan 

however, not appear work. there doing wrong here? instead resort following desired output

>>> df1.reset_index([1]).join(data).set_index('key2',append=true)            var1 key1 key2          1       11      2       11 b    1       22      2       22 

is there better way this?

how adding index name data dataframe , use join?

df1=pd.dataframe(data=[['a',1], ['a',2], ['b',1], ['b',2]], columns=['key1','key2']).set_index(['key1','key2']) data=pd.dataframe(index=['a','b'], data=[11,22], columns=['var1'])   data.index.names =['key1']  print df1.join(data)              var1 key1 key2          1       11      2       11 b    1       22      2       22 

Comments