我有一个带有3个索引的数据框,并且我正在尝试对它们进行排序。不幸的是,根据我尝试对索引进行排序的顺序,有时会出现以下错误:
Traceback (most recent call last):
File "<ipython-input-30-30a4bb212256>", line 1, in <module>
df_srmc_lrmc.sort_index(axis='index', level=['Station_Type', 'Generator','Year'], inplace=True)
File "E:\Python35\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\pandas\core\frame.py", line 3236, in sort_index
sort_remaining=sort_remaining)
File "E:\Python35\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\pandas\core\indexes\multi.py", line 1714, in sortlevel
primary = tuple(labels.pop(lev - i) for i, lev in enumerate(level))
File "E:\Python35\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\pandas\core\indexes\multi.py", line 1714, in <genexpr>
primary = tuple(labels.pop(lev - i) for i, lev in enumerate(level))
IndexError: pop index out of range
看看我的数据框,您可以看到以下索引:
df_srmc_lrmc.index.names
Out[32]: FrozenList(['Year', 'Generator', 'Station_Type'])
以下排序命令有效:
df_srmc_lrmc.sort_index(axis='index', level=['Generator','Year','Station_Type'], inplace=True)
df_srmc_lrmc.sort_index(axis='index', level=['Year','Station_Type', 'Generator'], inplace=True)
df_srmc_lrmc.sort_index(axis='index', level=['Year','Generator','Station_Type'], inplace=True)
df_srmc_lrmc.sort_index(axis='index', level=['Station_Type', 'Year','Generator'], inplace=True)
但是以下内容却没有,它们抛出了上面提到的错误:
df_srmc_lrmc.sort_index(axis='index', level=['Generator','Station_Type','Year'], inplace=True)
df_srmc_lrmc.sort_index(axis='index', level=['Station_Type', 'Generator','Year'], inplace=True)
我确定您已经猜到了,我想要一种不起作用的排序顺序:(
我的熊猫版本信息:
pd.__version__
Out[34]: '0.20.3'
有人可以告诉我发生了什么事,或者我做错了什么?我是Python的新手,所以掌握的越多越好。
谢谢