我正在尝试在单个Id
列上加入多个pandas数据帧,但是当我尝试合并时,我收到警告:
KeyError:'Id'。
我认为可能是因为我的数据帧有groupby
语句产生的偏移列,但我很可能错了。无论哪种方式,我都无法弄清楚如何“取消堆叠”我的数据帧列标题。 this question的答案似乎都没有效果。
我的groupby
代码:
step1 = pd.DataFrame(step3.groupby(['Id', 'interestingtabsplittest2__grp'])['applications'].sum())
step1.sort('applications', ascending=False).head(3)
返回:
如何将这些偏移标题放到顶层?
答案 0 :(得分:37)
您正在寻找.reset_index()
。
In [11]: df = pd.DataFrame([[2, 3], [5, 6]], pd.Index([1, 4], name="A"), columns=["B", "C"])
In [12]: df
Out[12]:
B C
A
1 2 3
4 5 6
In [13]: df.reset_index()
Out[13]:
A B C
0 1 2 3
1 4 5 6
注意:您可以在执行groupby时使用as_index=False
来避免此步骤。
step1 = step3.groupby(['Id', 'interestingtabsplittest2__grp'], as_index=False)['applications'].sum()
答案 1 :(得分:6)
如果您使用 .agg()
进行多重聚合或按多列分组,则接受的答案不起作用
您可以改为删除最顶层,然后重置索引。
df.droplevel(axis=1, level=0).reset_index()
这里,我只降低了一层,但你也可以传递一个数组:
df.droplevel(axis=1, level=[0,1]).reset_index()