2015-09-25 69 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