Pandas df打印输出



如何按"性别"列交替F、M对数据帧进行排序?

Name    Sex Age Height  Weight
0   Alfred  M   14  69.0    112.5
1   Alice   F   13  56.5    84.0
2   Barbara F   13  65.3    98.0
3   Carol   F   14  62.8    102.5
4   Henry   M   14  63.5    102.5
5   James   M   12  57.3    83.0
6   Jane    F   12  59.8    84.5
7   Janet   F   15  62.5    112.5
8   Jeffrey M   13  62.5    84.0
9   John    M   12  59.0    99.5
10  Joyce   F   11  51.3    50.5
11  Judy    F   14  64.3    90.0
12  Louise  F   12  56.3    77.0
13  Mary    F   15  66.5    112.0
14  Philip  M   16  72.0    150.0
15  Robert  M   12  64.8    128.0
16  Ronald  M   15  67.0    133.0
17  Thomas  M   11  57.5    85.0
18  William M   15  66.5    112.0

目标:交替打印性别栏F和M。

IIUC,试试这个:

(df.assign(sortkey=df.groupby('Sex').cumcount())
.sort_values(['sortkey','Sex'])
.drop('sortkey', axis=1))

输出:

Name Sex  Age  Height  Weight
1     Alice   F   13    56.5    84.0
0    Alfred   M   14    69.0   112.5
2   Barbara   F   13    65.3    98.0
4     Henry   M   14    63.5   102.5
3     Carol   F   14    62.8   102.5
5     James   M   12    57.3    83.0
6      Jane   F   12    59.8    84.5
8   Jeffrey   M   13    62.5    84.0
7     Janet   F   15    62.5   112.5
9      John   M   12    59.0    99.5
10    Joyce   F   11    51.3    50.5
14   Philip   M   16    72.0   150.0
11     Judy   F   14    64.3    90.0
15   Robert   M   12    64.8   128.0
12   Louise   F   12    56.3    77.0
16   Ronald   M   15    67.0   133.0
13     Mary   F   15    66.5   112.0
17   Thomas   M   11    57.5    85.0
18  William   M   15    66.5   112.0

最新更新