pandas 尝试对自定义列表中的数据集进行排序时出现错误消息

2guxujil  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(125)

我使用python来组织导入的csv文件。我拥有的数据集如下所示

Name      Style      ID
0  heels    High end     1
1  sneaker    Middle     0
2  top      High end     3
3  skirt     Low end     6
4  dress    High end     4
5  sweater   Low end     9
6  hat        N/A.       2
..

我尝试对数据集进行如下排序:首先排列高端、中端和低端,然后排列其他样式

Name      Style      ID
0  heels    High end     1
1  sneaker  High end     3
2  top      High end     4
3  skirt      Middle     0
4  dress     Low end     6
5  sweater   Low end     9
6  hat        N/A.       2
...

我试过这个密码
我收到错误

  • --〉3Clothing_Df ["样式"]. apply(lambda x:排序顺序[x])
TypeError: list indices must be integers or slices, not str

我也试过:
返回相同的Typeerror
我不知道如何最好地解决这个问题,因为它是一个非常大的数据集,我只需要弄清楚如何自定义排序我的数据。需要任何帮助,谢谢

xxe27gdn

xxe27gdn1#

请使用pd.Categorical指定顺序。

style_list = df['Style'].unique()
sort_order = sorted(style_list, key=lambda x: (x == 'High end', x == 'Middle', x == 'Low end'), reverse=True)
df['Style'] = pd.Categorical(df['Style'], categories=sort_order, ordered=True)
df.sort_values('Style', inplace=True)

输出:

> df

      Name     Style  ID
0    heels  High end   1
2      top  High end   3
4    dress  High end   4
1  sneaker    Middle   0
3    skirt   Low end   6
5  sweater   Low end   9
6      hat      N/A.   2
7   jacket     Other  10

相关问题