如何更改数据框中的行顺序

时间:2020-09-02 09:54:33

标签: python pandas

当我使用pd.read_csv()从指定文件夹中导入数据时,该文件夹中的所有文件均按字母顺序排序(例如A1,A2,A3,A4,...,A12,B1,B2,..., B12),则数据帧中创建的行的顺序为(A1,A10,A11,A12,A2,A3,A4,A5,A6,...,A9,B1,B10,B11,B12,B2,... ,B9)。因此,A10,A11,A12位于A2之前。 您知道如何按我想要的顺序导入数据吗?

它看起来像这样:

data = {
   'Order':['A1', 'A10', 'A11', 'A12', 'A2', 'A3' ,'A4' ,'A5' ,'A6' ,'A7' ,'A8', 'A9',
               'B1', 'B10', 'B11', 'B12', 'B2', 'B3' ,'B4' ,'B5' ,'B6' ,'B7' ,'B8', 'B9']}

1 个答案:

答案 0 :(得分:5)

尝试使用str.extract从字符串的数字部分中拆分文本-将数字部分转换为int dtype。然后对两列进行排序,并使用reindex对DataFrame进行排序:

df = pd.DataFrame(data)

df.reindex(
    df.Order.str.extract(r'^(.*?)(\d+)$')
    .astype({1:'int'})
    .sort_values([0, 1])
    .index)

[出]

   Order
0     A1
4     A2
5     A3
6     A4
7     A5
8     A6
9     A7
10    A8
11    A9
1    A10
2    A11
3    A12
12    B1
16    B2
17    B3
18    B4
19    B5
20    B6
21    B7
22    B8
23    B9
13   B10
14   B11
15   B12