熊猫sort_index(有时?)引发错误:IndexError:弹出索引超出范围

时间:2018-11-21 22:02:19

标签: python pandas dataframe

我有一个带有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的新手,所以掌握的越多越好。

谢谢

0 个答案:

没有答案