【问题标题】:How to change order of rows in dataframe [duplicate]如何更改数据框中的行顺序[重复]
【发布时间】:2020-12-21 11:27:09
【问题描述】:

当我使用 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']}

【问题讨论】:

标签: python pandas


【解决方案1】:

尝试使用 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

【讨论】:

    猜你喜欢
    • 2019-10-04
    • 2013-04-09
    • 2011-11-01
    • 2017-08-04
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    相关资源
    最近更新 更多