数据帧中的自定义数据排序

2024-04-28 10:25:30 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我的数据

TX  Subj    W1  W2  W3  W4
0B  C2  33.1    32.9    35.6    35.9
1A  B12 22.5    22.2    21.9    22.6
1A  B10 22.4    22.1    21.6    22.9
1B  A6  28.7    29.1    28.6    29.8
0B  C1  30.7    32.1    35.4    36.1
0A  C4  39.6    39.8    42.9    43.4
0A  B4  42.7    41.4    44.1    43.9
1A  C6  31.5    31.8    34.4    33.4
0A  D7  23.4    26.3    29.7    29.4
1A  D2  31.6    27.8    30.2    30.5
1B  A20 21.7    21.8    22.3    23.7
1C  A1  34.7    34.8    34.6    38.3
1A  C5  27.5    28.1    29.1    28.4

我想按“0A”、“1A”、“0B”、“1B”、“1C”的特定顺序对这些数据进行排序。我可以用排序索引。但它让我按升序(0A,0B,1A,1B,1C)对数据进行排序

我应该使用哪个函数按特定顺序对数据进行排序


Tags: 数据排序顺序w1c2txc1a6
1条回答
网友
1楼 · 发布于 2024-04-28 10:25:30

不用硬编码字典,你可以试试这个。第一行通过解析TX创建两列TX1TX2,然后使用sort_values对其排序。此外,我还删除了我创建的列。该部分是可选的:

df = pd.concat([df, df.TX.apply(lambda s: pd.Series({'TX1': s[1], 'TX2':s[0]}))], axis=1)
df.sort_values(['TX1','TX2'], ascending = [True, True]).drop(['TX1','TX2'], axis=1)
     TX Subj    W1    W2    W3    W4
    5   0A   C4  39.6  39.8  42.9  43.4
    6   0A   B4  42.7  41.4  44.1  43.9
    8   0A   D7  23.4  26.3  29.7  29.4
    1   1A  B12  22.5  22.2  21.9  22.6
    2   1A  B10  22.4  22.1  21.6  22.9
    7   1A   C6  31.5  31.8  34.4  33.4
    9   1A   D2  31.6  27.8  30.2  30.5
    12  1A   C5  27.5  28.1  29.1  28.4
    0   0B   C2  33.1  32.9  35.6  35.9
    4   0B   C1  30.7  32.1  35.4  36.1
    3   1B   A6  28.7  29.1  28.6  29.8
    10  1B  A20  21.7  21.8  22.3  23.7
    11  1C   A1  34.7  34.8  34.6  38.3

相关问题 更多 >