首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pd.crosstab丢失的数据?

Pd.crosstab丢失的数据?
EN

Stack Overflow用户
提问于 2022-11-21 14:21:57
回答 1查看 31关注 0票数 1

我正在使用pd.crosstab来统计在场/缺勤数据。在第一列中,我有几个存在计数(用1表示),在第二列中,我只有一个‘存在’。但是,当我对这些数据运行交叉表时,第二列中的单个存在是不被计算的。有人能解释一下为什么会发生这种事吗?我做错了什么?

Python诉3.8.5 Pandas诉1.2.3 System: MacOS Monterey诉12.5.1

Column1:

代码语言:javascript
复制
>>> mbx_final['Cmpd1640']
OV745_1A    0
OV745_1B    0
OV745_1C    1
OV745_1D    1
OV745_1E    0
OV745_4A    1
OV745_4B    1
OV745_4C    0
OV22_12A    1
OV22_12B    1
OV22_12C    1
OV22_12D    0
OV22_12E    0
OV22_12F    0
OV22_13A    0
OV22_13B    0
OV22_13C    0
OV86_6A     1
OV86_6D     1
OV86_6E     1
OV86_6F     1
OV86_6G     1
OV86_6H     1
OV86_6I     1
OV86_6J     1
OV86_6K     0
OV86_6L     1
OV86_8A     1
OV86_8B     1
OV86_8C     1
OB1B        1
OB1C        1
SK3A        0
SK3B        0
SK3C        0
SK7A        1
SK7B        0 

Column2:

代码语言:javascript
复制
>>> mgx_final['Otu2409']
OV745_1A    0
OV745_1B    0
OV745_1C    0
OV745_1D    0
OV745_1E    0
OV745_4A    0
OV745_4B    0
OV745_4C    0
OV22_12A    0
OV22_12B    0
OV22_12C    0
OV22_12D    0
OV22_12E    0
OV22_12F    0
OV22_13A    0
OV22_13B    0
OV22_13C    0
OV86_6A     0
OV86_6D     0
OV86_6E     0
OV86_6F     0
OV86_6G     0
OV86_6H     0
OV86_6I     0
OV86_6J     0
OV86_6K     0
OV86_6L     0
OV86_8A     0
OV86_8B     0
OV86_8C     0
OB1A        1
OB1C        0
SK3A        0
SK3B        0
SK3C        0
SK7A        0
SK7B        0

交叉表命令:

代码语言:javascript
复制
contingency_tab = pd.crosstab(mbx_final['Cmpd1640'],mgx_final['Otu2409'],margins=True)

结果:

代码语言:javascript
复制
>>> contingency_tab
Otu2409    0  All
Cmpd1640         
0         15   15
1         21   21
All       36   36

我希望看到这样的结果:

代码语言:javascript
复制
>>> contingency_tab
Otu2409    0   1   All
Cmpd1640         
0         15   0   15
1         21   1   22
All       36   1   37

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-21 14:26:34

您可以使用dropna参数,默认情况下该参数设置为True。将其设置为False将包括条目全部为NaN的列。

代码语言:javascript
复制
contingency_tab = pd.crosstab(mbx_final['Cmpd1640'],mgx_final['Otu2409'],margins=True, dropna=False)

您可以在这里阅读更多关于官方文档的内容:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.crosstab.html

编辑1:

我复制了您的数据集和代码,并运行了以下代码:

代码语言:javascript
复制
df_in = pd.read_excel("Book1.xlsx", index_col="index")
mbx_final = df_in[["Cmpd1640"]]
mgx_final = df_in[["Otu2409"]]
contingency_tab  = pd.crosstab(mbx_final['Cmpd1640'], mgx_final['Otu2409'], margins=True)
display(contingency_tab)

我得到了你的预期输出:

显示交叉表函数输出的方式可能有问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74520394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档