python - 用计数器替换 pd.MultiIndex 级别 2

标签 python pandas multi-index

我有一个多索引的 Pandas 系列,看起来像这样:

 index1   subindex   value
---------------------------
 label1   a          2.0
          b          4.1
          c          2.3
 label2   r1         6.2
          s7         45.1

我想把它变成下面这样:

 index1   subindex   value
--------------------------------
 label1   0          ('a', 2.0)
          1          ('b', 4.1)
          2          ('c', 2.3)
 label2   0          ('r1',6.2)
          1          ('s7',45.1)

所以对于第1级的每一个子索引,我想用一个计数器替换它,但首先我想将子索引与该位置的实际值合并。在 Pandas 中有一种简单的方法可以做到这一点吗?

谢谢。

最佳答案

df.reset_index('subindex').apply(tuple, 1).to_frame('value').set_index(
    df.groupby('index1').cumcount().rename('subindex'), append=True)

                      value
index1 subindex            
label1 0           (a, 2.0)
       1           (b, 4.1)
       2           (c, 2.3)
label2 0          (r1, 6.2)
       1         (s7, 45.1)

关于python - 用计数器替换 pd.MultiIndex 级别 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45866690/

相关文章:

python - 如何使用 Python 按相同条件过滤多个数据框列

python - 为什么它会打印有趣的字符?单码问题?

python - 在 Pandas 中将多列与数值组合

python - python 二分搜索陷入无限循环

python - 将字符串追加到列表中的字符串

python - 具有多索引列的 Pandas groupby

python - Pandas - 在重命名期间创建多索引列

用于数据框中多个索引的 Python pandas idxmax

python - 如果 Windows 路径限制已被删除,如何从 python 知道

python - 如何实现适用于负数的 CountingSort?