我有一个数据帧
Testcase Processing_time Pass Fail avg_failure_rate Ranking_value
t1 1.102088 8 26 76.47 69.38
t2 1.718864 19 3 13.63 7.93
t3 25 22 0 0 0
t4 15 22 0 0 0
我想保留前两个测试用例,因为它来自上面的数据框架,但我想根据最短的处理时间列对其余的测试用例进行排序。
所需输出:
TestCase Processing_time Pass Fail avg_failure_rate Ranking_value
t1 1.102088 8 26 76.47 69.38
t2 1.718864 19 3 13.63 7.93
t4 15 22 0 0 0
t3 25 22 0 0 0
如果测试用例的排序值等于0,则应该根据最短处理时间规则对它们进行排序。有什么办法可以做到这一点吗?
对.loc
排序为0的过滤器,按.sort_values()
排序。然后在秩值不等于0的部分后面加上.append()
,如下:
df.loc[df['Ranking_value'] != 0].append(df.loc[df['Ranking_value'] == 0].sort_values('Processing_time'))
结果:
Testcase Processing_time Pass Fail avg_failure_rate Ranking_value
0 t1 1.102088 8 26 76.47 69.38
1 t2 1.718864 19 3 13.63 7.93
3 t4 15.000000 22 0 0.00 0.00
2 t3 25.000000 22 0 0.00 0.00
分两步完成,拆分数据框,然后返回concat
idx = df.index[df.Ranking_value==0]
out = pd.concat([df.drop(idx),df[idx].sort_values('Processing_time')])
Out[120]:
Testcase Processing_time Pass Fail avg_failure_rate Ranking_value
0 t1 1.102088 8 26 76.47 69.38
1 t2 1.718864 19 3 13.63 7.93
3 t4 15.000000 22 0 0.00 0.00
2 t3 25.000000 22 0 0.00 0.00
试试遮罩。
mask = df.loc[:,“Ranking_value”] == 0.
df.loc[mask,:].sort_values(“Processing_time”,inplace=True)