Python groupby之后,如何展平列标题?

Python groupby之后,如何展平列标题?,python,pandas,dataframe,Python,Pandas,Dataframe,我试图在单个Id列上左连接多个数据帧,但当我尝试合并时,我收到警告: KeyError:'Id' 我想这可能是因为我的数据帧有一个由groupby语句产生的偏移列,但我很可能是错的。无论哪种方式,我都不知道如何“取消堆叠”我的dataframe列标题。所有的答案似乎都不起作用 我的groupby代码: step1 = pd.DataFrame(step3.groupby(['Id', 'interestingtabsplittest2__grp'])['applications'].sum())

我试图在单个
Id
列上左连接多个数据帧,但当我尝试合并时,我收到警告:

KeyError:'Id'

我想这可能是因为我的数据帧有一个由
groupby
语句产生的偏移列,但我很可能是错的。无论哪种方式,我都不知道如何“取消堆叠”我的dataframe列标题。所有的答案似乎都不起作用

我的
groupby
代码:

step1 = pd.DataFrame(step3.groupby(['Id', 'interestingtabsplittest2__grp'])['applications'].sum())
step1.sort('applications', ascending=False).head(3)
返回:

如何将这些偏移标题放入顶层?

您正在寻找的


注意:在执行groupby时,可以使用
as_index=False
来避免此步骤

step1 = step3.groupby(['Id', 'interestingtabsplittest2__grp'], as_index=False)['applications'].sum()

如果您使用
.agg()
进行多个聚合,或者如果您按多个列进行分组,则接受的答案不起作用

您可以删除最顶层,然后重置索引

df.droplevel(axis=1, level=0).reset_index()
在这里,我只降低了一个级别,但您也可以传递一个数组:

df.droplevel(axis=1, level=[0,1]).reset_index()

如果您在组末尾实现了agg函数。列组无法按as_索引展平。我从中找到了答案。希望这对像我这样的人有帮助。
df.droplevel(axis=1, level=[0,1]).reset_index()