gpt4 book ai didi

python - Pandas 设置多级列索引

转载 作者:太空狗 更新时间:2023-10-30 01:30:49 27 4
gpt4 key购买 nike

考虑下面的pd.DataFrame

df_index = pd.MultiIndex.from_product([['foo','bar'],['one','two','three']])
df = pd.DataFrame(np.random.randint(0,10,size=18, dtype='int').reshape((-1,6)), columns=df_index)

print(df)
foo bar
one two three one two three
0 7 3 8 3 6 0
1 2 5 9 4 3 6
2 4 2 6 6 4 5

我希望将 'foo' 及其中的所有子索引设置为索引。我怎样才能做到这一点?我正在努力解决 'set_index'pd.IndexSlice 但仍然无法找到解决方案

最佳答案

您需要将 MultiIndex 的所有级别作为元组传递。所以正确的格式应该是:

df.set_index([('foo', 'one'), ('foo', 'two'), ('foo', 'three')])

如果这很麻烦,您可以使用列表理解来创建索引,例如:

idx = [x for x in df.columns if x[0] == 'foo']
print(idx)
# [('foo', 'one'), ('foo', 'two'), ('foo', 'three')]

df.set_index(idx)

[输出]

                                   bar          
one two three
(foo, one) (foo, two) (foo, three)
1 3 4 4 8 3
5 1 0 4 7 5
0 0 3 9 1 6

关于python - Pandas 设置多级列索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56788679/

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