从数据框中删除额外的列级别

Remove extra column level from dataframe

我的数据框看起来像这样。

这是这段代码的结果:

survival_by_position = survival_by_position.groupby("POSITION")["SURVIVED"].value_counts().rename("Count").reset_index()
survival_by_position = survival_by_position.pivot(index = "POSITION", columns = "SURVIVED", values = "Count")
survival_by_position = survival_by_position.rename(columns = {False: "DEAD", True: "SURVIVORS"})

我希望它看起来像这样。

也就是说,POSITION 应该保留索引,但是列 DEADSURVIVORS应该“下来”,并且 SURVIVED 应该消失。我试图(重新)设置索引,创建一个新的数据框并为其分配正确的索引和列,但没有任何效果。我要么得到所有 NaN,要么得到默认的整数索引,要么得到一些错误。我知道这一定是一些多索引诡计,但我不熟悉,所以我不知道如何解决它。

您只需重命名列轴:

survival_by_position = survival_by_position.rename_axis(columns=None)

完整代码:

survival_by_position = (
    survival_by_position.value_counts(['POSITION', 'SURVIVED'])
                        .unstack('SURVIVED').fillna(0).astype(int)
                        .rename(columns={True: 'DEAD', False: 'SURVIVORS'})
                        .rename_axis(columns=None)
)

一些修改:

  1. groupby / value_counts 替换为 value_counts

  2. pivot替换为unstack

  3. 删除rename('Count')

  4. 移除reset_index()