gpt4 book ai didi

python - 在 pandas DataFrame 中重新排序 MultiIndex 的级别

转载 作者:太空狗 更新时间:2023-10-29 20:18:20 24 4
gpt4 key购买 nike

我有一个看起来像这样的 DataFrame:

>>> df = pd.DataFrame(index=pd.MultiIndex.from_tuples([(num,letter,color) 
for num in range(1,3)
for letter in ['a','b','c'] for color in ['Red','Green']],
names=['Number','Letter','Color']))
>>> df['Value'] = np.random.randint(1,100,len(df))
>>> df
Value
Number Letter Color
1 a Red 97
Green 61
b Red 97
Green 98
c Red 91
Green 47
2 a Red 17
Green 63
b Red 26
Green 73
c Red 34
Green 68

但我实际上希望我的索引按“字母、颜色、数字”排序。

我目前是这样做的:

>>> df.reset_index().set_index(['Letter','Color','Number'])
Value
Letter Color Number
a Red 1 97
Green 1 61
b Red 1 97
Green 1 98
c Red 1 91
Green 1 47
a Red 2 17
Green 2 63
b Red 2 26
Green 2 73
c Red 2 34
Green 2 68

这是最好的方法吗?

最佳答案

最好用reorder_levels操纵 MultiIndex 级别的顺序。只需按您想要的顺序传入级别名称/编号列表即可:

>>> df.reorder_levels(['Letter','Color','Number'])
Value
Letter Color Number
a Red 1 41
Green 1 56
b Red 1 43
Green 1 42
c Red 1 89
Green 1 18
a Red 2 55
Green 2 93
b Red 2 64
Green 2 9
c Red 2 21
Green 2 93

还有 swaplevel如果您只是想交换两个级别的位置。

关于python - 在 pandas DataFrame 中重新排序 MultiIndex 的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34029608/

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