首页 > 解决方案 > 如何删除分层列名

问题描述

以下代码行满足我的需要:

df=df.groupby('Continent').agg({'PopEst': ['size', 'sum', 'mean', 'std']})

然而结果是:

PopEst                                          
                size           sum          mean           std
Continent                                                     
Asia               5  2.898666e+09  5.797333e+08  6.790979e+08
Australia          1  2.331602e+07  2.331602e+07           NaN
Europe             6  4.579297e+08  7.632161e+07  3.464767e+07
North America      2  3.528552e+08  1.764276e+08  1.996696e+08
South America      1  2.059153e+08  2.059153e+08           NaN

如果我 print(list(df.columns)) 我得到这个:

[('PopEst', 'size'), ('PopEst', 'sum'), ('PopEst', 'mean'), ('PopEst', 'std')]

我需要上面的行来打印(大小、总和、平均值和标准)

如何在不删除子列的情况下删除 PopEst 父列

标签: pythonpandas

解决方案


您可以通过在列表中传递聚合函数并在之后指定列来防止它groupby

df=df.groupby('Continent')['PopEst'].agg(['size', 'sum', 'mean', 'std'])

MultiIndex在您的解决方案中,通过以下方式删除第一级DataFrame.droplevel

df=df.groupby('Continent').agg({'PopEst': ['size', 'sum', 'mean', 'std']})
df = df.droplevel(0, axis=1)

推荐阅读