pandas 交叉表中的列混乱

The columns are disarrayed in pandas crosstab

代码是在Seaborn中用Titanic数据集构建一个pd.crosstab。输出中的列总和 table 看起来很乱。

import pandas as pd
import seaborn as sns

titanic = sns.load_dataset('titanic')

bin = [0,15,100]
titanic["adult"] = pd.cut(titanic.age, bin, labels=["kid","adult"])
pd.crosstab(titanic.survived, titanic.adult, normalize=True, margins=True)

我希望有 0.116246 / 0.883754 / 1.000000,但它在最后一行给出了 0.883754 / 0.116246 / 1.000000 应该放置列总和的位置。

总计 flipping/reversal 仅仅是因为原始 age 列中存在 NaN 值,随后在您创建的分箱 adult 列中存在 NaN 值。您应该将 dropna=False 添加到 pd.crosstab() 命令,这将 return 正确的结果:

pd.crosstab(titanic.survived, titanic.adult, dropna=False, normalize=True, margins=True)

adult   kid     adult       All
survived            
0   0.047619    0.546218    0.616162
1   0.068627    0.337535    0.383838
All 0.116246    0.883754    1.000000