我有一个数据框df
,如下所示:
# df.head(10)
TYPE A B
0 0 5 25
1 1 7 23
2 5 10 43
3 1 5 37
4 2 4 61
5 3 1 17
6 0 8 39
7 2 4 59
8 4 2 6
9 0 3 31
我有一个多索引地图mapp
,如下所示:
# mapp.head(10)
num
AA BB
1 1 1
4 2
5 3
10 4
17 5
18 6
2 3 7
6 8
9 9
3 3 10
我想像这样添加一个df['num']
列:
TYPE A B num
0 0 5 25 74
1 1 7 23 89
2 5 10 43 129
3 1 5 37 77
4 2 4 61 62
5 3 1 17 5
6 0 8 39 98
7 2 4 59 61
8 4 2 6 8
9 0 3 31 40
我尝试使用以下代码实现它:
idx = df.set_index(['A', 'B']).index
df['num'] = mapp.loc[idx, 'num']
但是Python抛出异常:
Exception: cannot handle a non-unique multi-index!
我该如何解决?或者还有其他方法可以解决这个问题吗?此外,df
的大小非常大,我不想使用循环。
答案 0 :(得分:2)
df1 = df.join(mapp, on=['A','B'])
print (df1)
TYPE A B num
0 0 5 25 NaN
1 1 7 23 NaN
2 5 10 43 NaN
3 1 5 37 NaN
4 2 4 61 NaN
5 3 1 17 5.0
6 0 8 39 NaN
7 2 4 59 NaN
8 4 2 6 8.0
9 0 3 31 NaN