我有两个数据框. df1是多索引的:
value
first second
a x 0.471780
y 0.774908
z 0.563634
b x -0.353756
y 0.368062
z -1.721840
和df2:
value first a 10 b 20
如何将两个数据帧与仅一个多重索引合并,在这种情况下是“第一”索引?所需的输出将是:
value1 value2
first second
a x 0.471780 10
y 0.774908 10
z 0.563634 10
b x -0.353756 20
y 0.368062 20
z -1.721840 20
解决方法
你可以使用
get_level_values:
firsts = df1.index.get_level_values('first')
df1['value2'] = df2.ix[firsts].values
注意:你几乎在这里做一个join(除了df1是MultiIndex)…所以可能有一个更简洁的方式来描述这个…
.
在一个例子中(类似于你所拥有的):
df1 = pd.DataFrame([['a','x',0.123],['a',0.234],'y',0.451],['b',0.453]],columns=['first','second','value1']
).set_index(['first','second'])
df2 = pd.DataFrame([['a',10],20]],'value']).set_index(['first'])
firsts = df1.index.get_level_values('first')
df1['value2'] = df2.ix[firsts].values
In [5]: df1
Out[5]:
value1 value2
first second
a x 0.123 10
x 0.234 10
y 0.451 10
b x 0.453 20