Pandas str按字母顺序排列,然后按数字顺序排列

时间:2018-06-13 17:51:22

标签: python string pandas sorting dataframe

这可能是一个简单的问题,我找不到答案。在如下所示的pandas DataFrame中,如何按字母顺序排序对象,然后按数字排序。

开始:

import pandas as pd

d ={'col1': ['A1','B2','A10','A7','C4','C2','C22','B4']}
df = pd.DataFrame(data=d)
df

  col1
0   A1
1   A7
2  A10
3   B2
4   B4
5   C2
6   C4
7  C22

我想获得什么:

  col1
0   A1
1   A7
2  A10
3   B2
4   B4
5   C2
6   C4
7  C22

我得到的是什么:

>>>df.sort_values(by='col1')

  col1
0   A1
2  A10
1   A7
3   B2
4   B4
5   C2
7  C22
6   C4

1 个答案:

答案 0 :(得分:1)

使用Pandas对列表进行排序是错误的:

lot_file = pd.DataFrame()
lot_file['SPOOL'] = ['A39','B34','A3','B37','A6','B18','A48','B15','A47']
group_lots = lot_file.sort_values(by=['SPOOL'])
group_lots['SPOOL'].tolist()

输出:

['A3', 'A39', 'A47', 'A48', 'A6', 'B15', 'B18', 'B34', 'B37']

或使用sorted

spool_list = ['A39','B34','A3','B37','A6','B18','A48','B15','A47']
sorted(spool_list)

输出:

['A3', 'A39', 'A47', 'A48', 'A6', 'B15', 'B18', 'B34', 'B37']