gpt4 book ai didi

python - 满足第一级条件时更改第二级多索引标签

转载 作者:行者123 更新时间:2023-12-04 15:56:47 26 4
gpt4 key购买 nike

我有一个多索引 df,它有两个索引级别,如下所示:

    dfx = pd.DataFrame(np.random.rand(4, 2),
index=[['a', 'a', 'b', 'b'], ['aa', 'zz', 'gg', 'zz']],
columns=['data1', 'data2'])
dfx

data1 data2
a aa 0.847741 0.723235
zz 0.236876 0.343141
b gg 0.759153 0.546190
zz 0.481285 0.600514

我只想在第一级索引具有特定值的情况下更改索引标签。即仅在第一个标签为 b 时更改 zz 索引

Objective, get:

data1 data2
a aa 0.847741 0.723235
zz 0.236876 0.343141
b gg 0.759153 0.546190
water 0.481285 0.600514

如果我使用 .rename() 匹配的所有索引都会更改

dfx.rename(index={('zz') : 'water'}, inplace = True)
dfx

data1 data2
a aa 0.847741 0.723235
water 0.236876 0.343141
b gg 0.759153 0.546190
water 0.481285 0.600514

我尝试了以下代码行,但这似乎没有任何作用。

dfx.loc['b','zz'].rename(index={'zz' : 'water'}, inplace = True)
dfx.loc['b'].rename(index={'zz' : 'water'},  inplace = True)

我查阅了文档,但一直在努力寻找解决方案。我在这里做错了什么?

最佳答案

我们可以使用MultiIndex.map

d = {('b', 'zz'): ('b', 'water')}
dfx.index = dfx.index.map(lambda i: d.get(i, i))

            data1     data2
a aa 0.567847 0.844618
zz 0.752874 0.794704
b gg 0.854358 0.512400
water 0.237905 0.211369

关于python - 满足第一级条件时更改第二级多索引标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68849527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com