重新索引特定级别的熊猫MultiIndex

爵士乐

我有一个具有3个索引级别的DataFrame,我需要在不更改第一和第二级别的情况下重新索引第三级别。

我有一个像这样的DataFrame:

tuples = [('A', 'a', 1), ('A', 'a', 3), ('A', 'b', 3), ('B', 'c', 1), ('B', 'c', 2), ('B', 'c', 3), ('C', 'd', 2)]

idx = pd.MultiIndex.from_tuples(tuples, names=['first', 'second', 'third'])

df = pd.DataFrame(np.random.randn(7, 2), index=idx, columns=['col1', 'col2'])

                        col1      col2
first second third                    
A     a      1     -0.999816 -0.599815
             3     -0.277794 -0.453870
      b      3      1.116561  0.760010
B     c      1      1.018475 -0.667625
             2      0.695997  0.641531
             3      0.593724  0.265256
C     d      2      1.133767  0.716083

我想要一个这样的DataFrame:

                        col1      col2
first second third                    
A     a      1     -0.999816 -0.599815
             2      0         0
             3     -0.277794 -0.453870
      b      1      0         0
             2      0         0
             3      1.116561  0.760010
B     c      1      1.018475 -0.667625
             2      0.695997  0.641531
             3      0.593724  0.265256
C     d      1      0         0
             2      1.133767  0.716083
             3      0         0

我希望第三个索引在任何地方都相同

耶斯列尔

使用DataFrame.unstack默认工作由过去的指标MultiIndexDataFrame.stack

df1 = df.unstack(fill_value=0).stack()
print (df1)
                        col1      col2
first second third                    
A     a      1     -1.549363 -1.206828
             2      0.000000  0.000000
             3      0.445008 -0.173086
      b      1      0.000000  0.000000
             2      0.000000  0.000000
             3      1.488947 -0.792520
B     c      1      1.838997 -0.439362
             2      1.160003 -0.577093
             3     -1.031044 -0.838885
C     d      1      0.000000  0.000000
             2      0.316934  0.353254
             3      0.000000  0.000000

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

重新索引MultiIndex数据框的特定级别

熊猫:多次使用替换方法修改特定级别的Multiindex

熊猫Multiindex重新索引级别

将新索引添加到MultiIndex数据框熊猫的特定级别

熊猫:如何重新索引MultiIndex级别?

熊猫Multiindex系列级别重新索引

相对于任意级别的Pandas重新索引MultiIndex

如何在特定级别的多索引列中添加前缀?

大熊猫在特定级别向多索引添加行

熊猫在没有手动指定级别的情况下在多索引列上融化(Python 3.5.1)

具有多级列的熊猫数据框:重命名特定级别的列,使其与另一级相同

Monolog-仅记录特定级别的错误

列出递归到R中的特定级别的文件

tidyverse:汇总时计算特定级别的数量

需要合作伙伴提供特定级别的股份

如何仅记录特定级别的python日志记录

CakePHP Tree行为-查找特定级别的元素

熊猫:将任何列索引级别的列添加到multiindex

根据指定级别的多个值对MultiIndex DataFrame进行切片

如何按 Pandas Multiindex 中给定级别的条件进行过滤

如何重新索引单个级别的熊猫数据框,而其余部分保持原样?

如何加快行级别的重新索引?

在“结束”日期的级别上重新索引MultiIndex

MultiIndex查找给定级别具有给定值的所有索引

重新标记一个级别的Columns MultiIndex

慢熊猫DataFrame MultiIndex重新索引

从MultiIndex Series的给定级别中选择

非二叉树中特定级别的子节点数

火花中达到特定级别的值后,数据插入失败