在单个索引和MultiIndex DataFrame之间计算Pandas中的列

时间:2015-09-25 19:48:25

标签: python pandas

假设我有以下MultiIndex空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)]

我有以下DataFrame包含我的数据:

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

鉴于公共索引名为" key1"在两个DataFrame中,我认为我可以在空的DataFrame中计算一个等于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

有更好的方法吗?

1 个答案:

答案 0 :(得分: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