我有一个数据框(示例看起来像这样)
Type SKU Description FullDescription Size Price
Variable 2 Boots Shoes on sale XL,M,S
Variation 2.5 Boots XL XL 330
Variation 2.6 Boots M M 330
Variation 2.7 Boots S S 330
Variable 3 Boots Helmet Sizes E42,E41
Variation 3.8 Helmet E42 E42 89
Variation 3.2 Helmet E41 E41 89
我想要做的是根据大小对值进行排序,因此最终的数据框应如下所示:
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
我只能使用 sort_values()
但我似乎找不到任何东西来保留 Type 和 SKU 的顺序。任何帮助将不胜感激。
答案 0 :(得分:1)
有点长
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