You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选交叉表(Crosstab Table)元素?排除NotAnswered行方法

排除NotAnswered生成交叉表的几种方法

针对你的需求,这里有几种简单直接的方式得到只包含Male和Female的交叉表:

  • 方法1:先筛选数据再生成交叉表
    先把原数据里Sex不为NotAnswered的行过滤出来,再生成交叉表:

    filtered_df = df[df['Sex'].ne('NotAnswered')]
    cross_tab = pd.crosstab(filtered_df['Sex'], filtered_df['Visit'], margins=True)
    print(cross_tab)
    

    用.ne()(不等于)比isin()更简洁,适合仅排除单个值的场景。

  • 方法2:生成交叉表后删除目标行
    要是已经生成了包含NotAnswered的交叉表,直接删掉该行即可:

    full_cross_tab = pd.crosstab(df['Sex'], df['Visit'], margins=True)
    filtered_cross_tab = full_cross_tab.drop('NotAnswered')
    print(filtered_cross_tab)
    

    drop()默认会保留汇总的All行,无需额外处理。

  • 方法3:直接指定交叉表的行索引
    生成交叉表后,通过loc直接选取需要的行,一步到位:

    cross_tab = pd.crosstab(df['Sex'], df['Visit'], margins=True).loc[['Male', 'Female', 'All']]
    print(cross_tab)
    

以上方法都能得到符合要求的交叉表,后续可直接用该结果进行卡方检验。


内容的提问来源于stack exchange,提问作者Samaneh Arzpeima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:40:28