从数据框中删除额外的列级别
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 应该保留索引,但是列 DEAD 和 SURVIVORS应该“下来”,并且 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)
)
一些修改:
将 groupby
/ value_counts
替换为 value_counts
将pivot
替换为unstack
删除rename('Count')
移除reset_index()
我的数据框看起来像这样。
这是这段代码的结果:
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 应该保留索引,但是列 DEAD 和 SURVIVORS应该“下来”,并且 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)
)
一些修改:
将
groupby
/value_counts
替换为value_counts
将
pivot
替换为unstack
删除
rename('Count')
移除
reset_index()