用计数器替换 pd.MultiIndex 级别 2
Replace pd.MultiIndex level 2 with counter
我有一个 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)
我有一个 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)