2015-09-25 68 views
0

說我有以下的多指標空數據框:計算列

>>> 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)] 

而且我有以下數據框中包含我的數據:

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

鑑於常見的指數都DataFrames被命名爲「KEY1」,我想,我可以計算一個變量等於VAR1在我的空數據框中執行以下操作:

>>> df1['TestVar']=data['Var1'] 
>>> print df1 
      TestVar 
key1 key2   
a 1   NaN 
    2   NaN 
b 1   NaN 
    2   NaN 

然而,這似乎並沒有工作。有什麼我在這裏做錯了嗎?相反,我訴諸以下獲得我想要的輸出

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

有沒有更好的方法來做到這一點?

回答

2

如何添加索引名數據數據幀,然後使用加入?

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  
a 1  11 
    2  11 
b 1  22 
    2  22