如何筛选交叉表(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
相关产品推荐
相关产品推荐

