Python 对熊猫中的特定列进行排序

Python 对熊猫中的特定列进行排序,python,pandas,Python,Pandas,我有一个数据帧(示例如下所示) 我想做的是根据大小对值进行排序,这样最终的数据帧应该如下所示: Type SKU Description FullDescription Size Price Variable 2 Boots Shoes on sale S,M,XL Variation 2.7 Boots S

我有一个数据帧(示例如下所示)

我想做的是根据大小对值进行排序,这样最终的数据帧应该如下所示:

  Type          SKU      Description   FullDescription        Size      Price
    Variable       2        Boots          Shoes on sale       S,M,XL        
    Variation      2.7      Boots S                             S       330
    Variation      2.6      Boots M                             M        330
    Variation      2.5      Boots XL                            XL        330
    Variable       3        Boots           Helmet Sizes       E41,E42
    Variation      3.2      Helmet E41                          E41       89
    Variation      3.8      Helmet E42                          E42       89
我可以只使用
对值进行排序()
,但似乎找不到任何东西来保持类型和SKU的顺序。任何帮助都将不胜感激。

稍长一点

out = df.groupby(df.Type.eq('Variable').cumsum()).\
       apply(lambda x : pd.concat([x.iloc[[0]].assign(Size=lambda y : y['Size'].str.split(',').str[::-1].str.join(',')),
                        x.iloc[1:,].iloc[::-1]]))
Out[458]: 
             Type  SKU Description     Size  Price
Type                                              
1    0   Variable  2.0       Boots   S,M,XL    NaN
     3  Variation  2.7      BootsS        S  330.0
     2  Variation  2.6      BootsM        M  330.0
     1  Variation  2.5     BootsXL       XL  330.0
2    4   Variable  3.0       Boots  E41,E42    NaN
     6  Variation  3.2   HelmetE41      E41   89.0
     5  Variation  3.8   HelmetE42      E42   89.0

按大小的逻辑排序是什么。在您的第二行到第四行中,
XL
后跟
M
S
如何?最后两行的排序方式是
E41
E42
?是否尝试更改单个记录?或者试图改变数据帧中记录的排序方式?从您的示例来看,您似乎试图更改描述与大小的配对,因此“Boots S”的大小为“XL”。您的意思是将E41、E42切换为“靴子头盔尺寸”行中的E42、E41吗?大小列是否需要自定义排序函数,或者通常的字母排序是否足够?请修复所有打字错误,包括实际的sort_values()调用、sort_values()的输出,并详细说明该输出的错误。非常抱歉,我不确定它是如何发布以前未编辑的版本的,我已使用所需的正确数据框再次编辑了该问题,这将有助于清楚地理解该问题。真的很抱歉again@Manakin请随意回答,它现在打开了Ice one,我为他的原始df做了我的答案,但新的df有很多行代码,所以我认为你的更好,不知道为什么它不能在我的原始数据集上工作,它在变量下面显示变量,顺序仍然不正确,但工作正常,只是顺序相反。变量2低于变量2.7,2.6,2.5,变量的大小为XL,M,S。对于类型,它应该显示索引,但在我的原始数据集中,它在整个列中显示0
out = df.groupby(df.Type.eq('Variable').cumsum()).\
       apply(lambda x : pd.concat([x.iloc[[0]].assign(Size=lambda y : y['Size'].str.split(',').str[::-1].str.join(',')),
                        x.iloc[1:,].iloc[::-1]]))
Out[458]: 
             Type  SKU Description     Size  Price
Type                                              
1    0   Variable  2.0       Boots   S,M,XL    NaN
     3  Variation  2.7      BootsS        S  330.0
     2  Variation  2.6      BootsM        M  330.0
     1  Variation  2.5     BootsXL       XL  330.0
2    4   Variable  3.0       Boots  E41,E42    NaN
     6  Variation  3.2   HelmetE41      E41   89.0
     5  Variation  3.8   HelmetE42      E42   89.0