我有一个多级df' AB'
A = pd.DataFrame([[1, 5, 2], [2, 4, 4], [3, 3, 1], [4, 2, 2], [5, 1, 4]],
columns=['A', 'B', 'C'], index=[1, 2, 3, 4, 5])
B = pd.DataFrame([[3, 3, 3], [2, 2, 2], [4, 4, 4], [5, 5, 5], [6, 6, 6]],
columns=['A', 'B', 'C'], index=[1, 2, 3, 4, 5])
A.columns = pd.MultiIndex.from_product([['A'], A.columns])
B.columns = pd.MultiIndex.from_product([['B'], B.columns])
AB = pd.concat([A, B], axis = 1)
我有一个单一的df' C',其索引不同于' AB'
C = pd.DataFrame([[1, 1], [1, 1], [1, 1]], columns=['AA', 'BB'], index=[1, 2, 3])
我需要合并' C'到了' B' df' AB'的水平。结果应该像这样保持多级:
A B
A B C A B C AA BB
1 1 5 2 3 3 3 1 1
2 2 4 4 2 2 2 1 1
3 3 3 1 4 4 4 1 1
4 4 2 2 5 5 5
5 5 1 4 6 6 6
答案 0 :(得分:3)
在MultiIndex
上创建C
,第一级为'B'
,然后使用join
:
C.columns = pd.MultiIndex.from_product([['B'], C.columns])
ABC = AB.join(C, how='left')
结果输出:
A B
A B C A B C AA BB
1 1 5 2 3 3 3 1.0 1.0
2 2 4 4 2 2 2 1.0 1.0
3 3 3 1 4 4 4 1.0 1.0
4 4 2 2 5 5 5 NaN NaN
5 5 1 4 6 6 6 NaN NaN