我正在尝试在python的多级索引中添加额外的级别。我的数据框如下所示。
df1=pd.DataFrame(np.array([['A',1, 2, 3], ['B',-4,5 , -6], ['d',7, 0, 9]]), columns=['D','a', 'b', 'c'])
我使用以下代码添加了多个级别
df1.columns=pd.MultiIndex.from_tuples((("first","D"),("first",'a'),("second","b"),("second","c")))
现在,我想从不同的数据帧在第一和第二级之间添加另一级
df2=pd.DataFrame(np.array([['D',1], ['a',2 ], ['b',1],['c',3]]), columns=['11','22'])
所需的输出应如下所示。我想知道如何实现这一目标。非常感谢您的提前帮助。
first second
1 2 1 3
D a b c
A 1 2 3
B -4 5 -6
d 7 0 9
尝试:
# cache the original columns
columns = df1.columns
# force columns to RangeIndex
df1.columns = np.arange(df1.shape[1])
# rename the columns with the new name
df1.columns = pd.MultiIndex.from_tuples([
(x,a,y) for (x,y),a in zip(columns, [1,2,1,3])
])
输出:
first second
1 2 1 3
D a b c
0 A 1 2 3
1 B -4 5 -6
2 d 7 0 9
无可辩驳的是,直接重新分配列会发出警告,并且没有执行任何操作,因此复出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句