gpt4 book ai didi

python - 将新的嵌套级别值添加到 MultiIndex DataFrame

转载 作者:行者123 更新时间:2023-12-01 22:46:55 25 4
gpt4 key购买 nike

如何将另一个级别值添加到初始化为特定值(例如无)的 MultiIndex。很难用文字来描述如何添加新的值级别,最好用图形来描述:

df_before
a b c d
l1 l2
bar one 24 13 8 9
two 11 30 7 23
baz one 21 31 12 30
two 2 5 19 24
foo one 15 18 3 16
two 2 24 28 11
qux one 23 9 6 12
two 29 28 11 21

df_after
a b c d
l1 l2
bar one 24 13 8 9
two 11 30 7 23
new None None None None
baz one 21 31 12 30
two 2 5 19 24
new None None None None
foo one 15 18 3 16
two 2 24 28 11
new None None None None
qux one 23 9 6 12
two 29 28 11 21
new None None None None

注意:我的 DataFrame 确实具有三个级别,因此可以推广到更多级别的解决方案将不胜感激。我最好的尝试是获取旧级别的唯一值,附加一个新值并设置新级别,但它没有产生我想要的结果

# this is a failed attempt of what I wanted to do
new_level_values = [*list(df.index.get_level_values(2).unique()), "new"]
df.index = df.index.set_levels(levels=new_level_values, level=2)
df

最佳答案

使用DataFrame.reindex将新值附加到第二级并通过 MultiIndex.from_product 重新创建 MultiIndex :

v = [*list(df.index.levels[1]), "new"]

df = df.reindex(pd.MultiIndex.from_product([df.index.levels[0],v]))
print (df)
a b c d
l1
bar one 24.0 13.0 8.0 9.0
two 11.0 30.0 7.0 23.0
new NaN NaN NaN NaN
baz one 21.0 31.0 12.0 30.0
two 2.0 5.0 19.0 24.0
new NaN NaN NaN NaN
foo one 15.0 18.0 3.0 16.0
two 2.0 24.0 28.0 11.0
new NaN NaN NaN NaN
qux one 23.0 9.0 6.0 12.0
two 29.0 28.0 11.0 21.0
new NaN NaN NaN NaN

关于python - 将新的嵌套级别值添加到 MultiIndex DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75058019/

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