这是我的数据帧的头
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
我对数据帧执行了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'])
因此,如何以正确的顺序访问索引值?你知道吗
这是因为
multiindex levels
是一个frozenlist
总是显得被排序并且它们持有引用。所以如果你想要这个顺序,就把它们从frozenlist转换成list。i、 e如果您使用df.index.tolist()
,您可以看到基于数据帧的实际顺序。i、 电子相关问题 更多 >
编程相关推荐