gpt4 book ai didi

python - Pandas 多重索引在 sort_index 方法后未排序

转载 作者:太空宇宙 更新时间:2023-11-03 14:47:01 24 4
gpt4 key购买 nike

这是我的数据帧的头部

            McDonald's  Python  CSS  Microsoft Office        day  week day
Jour
2017-06-11 87 22 12 31 Sunday 6
2017-06-12 63 38 24 55 Monday 0
2017-06-13 63 41 25 56 Tuesday 1
2017-06-14 73 41 25 55 Wednesday 2
2017-06-15 72 39 24 53 Thursday 3

我对 dataFrame 进行了 groupby 操作,得到:

df_week = df.groupby(["day", "week day"]).mean()
df_week

McDonald's Python CSS Microsoft Office
day week day
Friday 4 76.076923 36.615385 22.384615 51.769231
Monday 0 68.230769 37.000000 22.230769 54.230769
Saturday 5 87.416667 21.500000 11.416667 30.750000
Sunday 6 90.000000 21.615385 11.000000 30.538462
Thursday 3 69.923077 40.076923 24.615385 55.846154
Tuesday 1 66.230769 39.461538 24.153846 57.000000
Wednesday 2 68.923077 40.000000 24.846154 56.538462

然后我使用工作日索引对数据帧进行排序。

df_week.sort_index(level="week day", inplace=True)

最后,数据帧看起来排序良好:

                    McDonald's     Python        CSS  Microsoft Office
day week day
Monday 0 68.230769 37.000000 22.230769 54.230769
Tuesday 1 66.230769 39.461538 24.153846 57.000000
Wednesday 2 68.923077 40.000000 24.846154 56.538462
Thursday 3 69.923077 40.076923 24.615385 55.846154
Friday 4 76.076923 36.615385 22.384615 51.769231
Saturday 5 87.416667 21.500000 11.416667 30.750000
Sunday 6 90.000000 21.615385 11.000000 30.538462

但是现在,如果我尝试使用索引值,它们仍然没有排序:

print(df_week.index.levels[0])
print(df_week.index.levels[1])

Index(['Friday', 'Monday', 'Saturday', 'Sunday', 'Thursday', 'Tuesday',
'Wednesday'],
dtype='object', name='day')
Int64Index([0, 1, 2, 3, 4, 5, 6], dtype='int64', name='week day')

如果我查看整个 MultiIndex 对象,很明显,索引标签和索引行是分开存储的。

MultiIndex(levels=[['Friday', 'Monday', 'Saturday', 'Sunday', 'Thursday', 'Tuesday', 'Wednesday'], [0, 1, 2, 3, 4, 5, 6]],
labels=[[1, 5, 6, 4, 0, 2, 3], [0, 1, 2, 3, 4, 5, 6]],
names=['day', 'week day'])

因此,如何才能以正确的顺序访问索引值?

最佳答案

这是因为多索引级别是一个frozenlist,它总是看起来是排序的并且它们保存引用。因此,如果您想要顺序,请将它们从卡住列表转换为列表。即,如果您使用 df.index.tolist() ,您可以看到基于数据帧的真实顺序。即

df.index.tolist()

[('Monday', 0),
('Tuesday', 1),
('Wednesday', 2),
('Thursday', 3),
('Friday', 4),
('Saturday', 5),
('Sunday', 6)]

关于python - Pandas 多重索引在 sort_index 方法后未排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46159565/

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