为MultiIndex DataFrame添加零值行:reindex方法未生效求助
问题原因及解决办法
问题出在两个MultiIndex的层级名称不匹配:
- prevtests的索引第三层名称是
pval - multindex的索引第三层名称是
p value
MultiIndex做union操作时,会同时校验层级名称和索引值,名称不一致会导致无法识别为同一层级,自然没法合并新的索引条目,所以reindex后DataFrame没变化。
解决步骤:
- 统一两个MultiIndex的层级名称,把multindex的第三层名称改成和prevtests一致的
pval - 重新执行reindex操作
具体代码:
# 修正multindex的层级名称,与prevtests对齐 multindex = multindex.set_names(['thickness', 'sample size', 'pval']) # 执行reindex合并索引并填充零值 prevtests = prevtests.reindex(prevtests.index.union(multindex), fill_value=0)
执行后就能得到你想要的结果:
tests fails thickness sample size pval 3.5 2 0.05 0 0 4 2 0.05 0 0 3.5 5 0.05 0 0 4 5 0.05 0 0 4 10 0.05 0 0
内容的提问来源于stack exchange,提问作者Zoe Allen
相关产品推荐
相关产品推荐

