Python 2.7 熊猫分类不按不同机器上的sort_值排序

Python 2.7 熊猫分类不按不同机器上的sort_值排序,python-2.7,pandas,Python 2.7,Pandas,编辑:问题的核心似乎是新版本。如果有人知道的代码与此相同,但适用于当前的pandas版本,请随时在下面进行评论/回答。谢谢 我有一个名为outputframe的熊猫数据框,里面有相应尺寸的衬衫。尺寸的顺序必须按实际尺寸顺序,而不是按字母顺序。我不久前通过使用以下代码解决了此问题: def getSizeTable(): return ['S','M','L','XL'] [...] outputframe['size'] = pd.Categorical(outputframe['siz

编辑:问题的核心似乎是新版本。如果有人知道的代码与此相同,但适用于当前的pandas版本,请随时在下面进行评论/回答。谢谢

我有一个名为outputframe的熊猫数据框,里面有相应尺寸的衬衫。尺寸的顺序必须按实际尺寸顺序,而不是按字母顺序。我不久前通过使用以下代码解决了此问题:

def getSizeTable():
    return ['S','M','L','XL']
[...]
outputframe['size'] = pd.Categorical(outputframe['size'], getSizeTalbe()]
[...]
outputframe.sort_values(by=['productid','size'], ascending=True,inplace=True)
几天前,我发现代码在某些较新的机器上不起作用。outputframe按ProductID排序,但大小按其原始顺序排列,而不是按类别的顺序排列

它在我的homeoffice电脑和新安装的ubuntu上都不起作用。但是,它仍然可以在旧的Windows7计算机上工作。这三台计算机都使用python27,并安装了相同的软件包(通过miniconda)


我查看了stackoverflow和pandas patchnotes,但我找不到解决问题的方法,也找不到做同样事情的替代代码。分类法似乎是一条出路。有人知道哪些不同的机器以不同的方式处理这些分类吗?是否有另一行代码可以完成相同的任务?

相同的
pandas
version?@AndrewL我仔细检查了一遍,发现它不是相同的版本。工作版本为17.x,非工作版本为19.x。现在的问题是:哪项更改使我的代码无效,我如何在不降级pandas版本的情况下修复它?@bkd,如果这个问题很关键-您可以始终使用
virtualenv
来创建虚拟环境,这样您就可以在pandas版本17.x上运行此特定程序,而不必在整个机器上降级该版本。我想知道在17中定义类别是否意味着排序顺序。您是否尝试过在19中设置
ordered=True
?这可能会解决您的问题。@AndrewL在研究pandas变更日志后,我尝试了“ordered=True”,但没有改变结果:(相同的
pandas
version?@AndrewL我仔细检查了一下,发现它不是同一个版本。工作版本是17.x,非工作版本是19.x。现在的问题是:哪个更改使我的代码无效,我如何在不降级pandas版本的情况下修复它?@bkd,如果这个问题很关键-您可以始终使用
virtualenv
创建虚拟环境,这样您就可以在pandas版本17.x上运行此特定程序,而不必在整个计算机上降级该版本。我想知道在17中定义类别是否意味着排序顺序。您是否尝试在19中设置
ordered=True
?这可能会解决您的问题。@AndrewL我尝试了“ordered=True”在研究了熊猫的变化记录后,但没有改变结果:(