Python 基于序列的数据帧规则排序

Python 基于序列的数据帧规则排序,python,pandas,Python,Pandas,首先是两名快速投球手,然后是两名旋转投球手,然后是一名快速投球手和一名全能投球手(击球手+投球手)。他们之间的顺序将由所使用的球门数量决定 Name Role run_scored wickets_taken 19 P Fast Bowler 62 13 18 Q Spin Bowler 65 12 16

首先是两名快速投球手,然后是两名旋转投球手,然后是一名快速投球手和一名全能投球手(击球手+投球手)。他们之间的顺序将由所使用的球门数量决定

     Name             Role            run_scored  wickets_taken
19    P          Fast Bowler          62             13
18    Q          Spin Bowler          65             12
16    O          Fast Bowler          32              9
15    N  Batsman+Fast Bowler         114              8
14    K          Fast Bowler          24              7
13    T          Spin Bowler          17              6

您可以按Wicket降序排序,创建一个字典映射角色到数据帧片段,然后根据您的规则连接结果

# sort by 'wickets_taken'
df = df.sort_values('wickets_taken', ascending=False)

# group by 'Role'
g = dict(tuple(df.groupby('Role')))

# concatenate custom slices
res = pd.concat([g['FastBowler'].iloc[:2],
                 g['SpinBowler'],
                 g['FastBowler'].iloc[2:],
                 g['Batsman+FastBowler']],
                ignore_index=True)
结果

print(res)

  Name                Role  run_scored  wickets_taken
0    P          FastBowler          62             13
1    O          FastBowler          32              9
2    Q          SpinBowler          65             12
3    T          SpinBowler          17              6
4    K          FastBowler          24              7
5    N  Batsman+FastBowler         114              8

如果您包含DataFrame,这会很有帮助您是否尝试了一些方法?或者到目前为止你有什么想法吗?谢谢,我做了条件切片,所以我想如果有一个更有效的方法可以存在的话。