熊猫数据框中的自定义数据排序

时间:2018-07-16 17:53:01

标签: python pandas sorting

下面是我的数据。

sprintf 'file_name_%s_%s.txt', $date, $code

我想按以下特定顺序对数据进行排序:“ 0A”,“ 1A”,“ 0B”,“ 1B”,“ 1C”。我可以使用sort_index。但这给了我升序排序的数据(0A,0B,1A,1B,1C)。

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

1 个答案:

答案 0 :(得分:1)

无需对字典进行硬编码,您可以尝试此操作。第一行通过解析TX1创建两列TX2TX,然后使用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