gpt4 book ai didi

pandas Multiindex,仅对一个级别的值进行排序

转载 作者:行者123 更新时间:2023-12-02 17:00:16 31 4
gpt4 key购买 nike

我有点难以对用于我的一个数据集的列的 pandas MultiIndex 进行排序:

MultiIndex(levels=[['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], ['Number of Visitors', 'Profit']],
labels=[[2, 2, 5, 5, 8, 8, 11, 11], [0, 1, 0, 1, 0, 1, 0, 1]],
names=['Month', None])

我希望在每个月的访问者数量之前显示利润,所以总的来说我对现在的级别很满意,但希望第二级别的标签是 [1,0,1,0,1 ,0,1,0] 而不是 [0,1,0,1,0,1,0,1]。有什么方法可以得到这个?我已经尝试过 sort_index,但无法让它按我想要的方式工作。

提前致谢!

最佳答案

使用reindex按二级:

mux = pd.MultiIndex(levels=[['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
['Number of Visitors', 'Profit']],
labels=[[2, 2, 5, 5, 8, 8, 11, 11], [0, 1, 0, 1, 0, 1, 0, 1]],
names=['Month', None])
print (mux)

df = pd.DataFrame({'A':range(8)}, index=mux)
print (df)
A
Month
Mar Number of Visitors 0
Profit 1
Jun Number of Visitors 2
Profit 3
Sep Number of Visitors 4
Profit 5
Dec Number of Visitors 6
Profit 7

df = df.reindex(['Profit','Number of Visitors'], level=1)
print (df)
A
Month
Mar Profit 1
Number of Visitors 0
Jun Profit 3
Number of Visitors 2
Sep Profit 5
Number of Visitors 4
Dec Profit 7
Number of Visitors 6

关于pandas Multiindex,仅对一个级别的值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54480410/

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