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