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

斯蒂芬·弗罗斯特

按一个级别排序后,如何重新编号MultiIndex级别?这是排序后的DataFrame:

+--------+---+------+
|        |   | text |
+--------+---+------+
| letter |   |      |
+--------+---+------+
| a      | 0 | blah |
+--------+---+------+
|        | 3 | blah |
+--------+---+------+
|        | 6 | blah |
+--------+---+------+
| b      | 1 | blah |
+--------+---+------+
|        | 4 | blah |
+--------+---+------+
|        | 7 | blah |
+--------+---+------+
| c      | 2 | blah |
+--------+---+------+
|        | 5 | blah |
+--------+---+------+
|        | 8 | blah |
+--------+---+------+

这就是我想要的(但可能会将原始索引保留在其自己的列中):

+--------+---+------+
|        |   | text |
+--------+---+------+
| letter |   |      |
+--------+---+------+
| a      | 0 | blah |
+--------+---+------+
|        | 1 | blah |
+--------+---+------+
|        | 2 | blah |
+--------+---+------+
| b      | 0 | blah |
+--------+---+------+
|        | 1 | blah |
+--------+---+------+
|        | 2 | blah |
+--------+---+------+
| c      | 0 | blah |
+--------+---+------+
|        | 1 | blah |
+--------+---+------+
|        | 2 | blah |
+--------+---+------+

我试图寻找答案,尝试编写不同的代码,但是我很困惑。

复制上面第一张表的代码:

import pandas as pd
df = pd.DataFrame({'letter': ['a', 'b', 'c'] * 3, 'text': ['blah'] * 9})
df.set_index(keys='letter', append=True, inplace=True)
df = df.reorder_levels(order=[1, 0])
df.sort_index(level=0, inplace=True)
print(df)
泰兹

这是我所做的:

df["new_index"] = df.groupby("letter").cumcount()
df

这给您:

          text  new_index
letter                   
a      0  blah          0
       3  blah          1
       6  blah          2
b      1  blah          0
       4  blah          1
       7  blah          2
c      2  blah          0
       5  blah          1
       8  blah          2

然后,您可以重置索引:

df.reset_index().set_index(["letter","new_index"])

                  level_1  text
letter new_index               
a      0                0  blah
       1                3  blah
       2                6  blah
b      0                1  blah
       1                4  blah
       2                7  blah
c      0                2  blah
       1                5  blah
       2                8  blah

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫Multiindex重新索引级别

熊猫Multiindex系列级别重新索引

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

如何为熊猫数据框的列MultiIndex重新索引?

如何使用熊猫重新排列索引级别?

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

慢熊猫DataFrame MultiIndex重新索引

熊猫如何在Multiindex DataFrame中获取对索引级别具有多个值的行的列表

在熊猫数据框中重新排序MultiIndex的级别

在级别中使用唯一值重新索引MultiIndex

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

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

仅重新索引MultiIndex数据帧的级别,reindex()损坏了?

熊猫 复制multiIndex级别

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

熊猫如何检索multiIndex的索引列

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

从熊猫数据透视表重新排序多索引中的级别?

如何更改熊猫MultiIndex列的顺序/分组/级别?

重新排序熊猫from_product-MultiIndex DataFrame中的级别,以及值?

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

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

如何重新索引熊猫数据透视表

如何查询熊猫中的MultiIndex索引列值

如何索引MultiIndex数据框以获取熊猫矩阵?

如何为MultiIndex数据框重新编制索引

熊猫重置MultiIndex的内部级别

在熊猫中选择Multiindex列的子级别

熊猫:访问MultiIndex级别以进行就地操作