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