按条件和列中的最小值筛选Pandas数据帧

2024-09-26 18:03:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似于

  test_a test_b  metric_e
0     OK    NOK        12
1     OK     OK         7
2     OK    NOK         2
3     OK     OK        55

我想按一个条件过滤,这意味着test_a == OK并捕捉{}上的最小值。我可以用两行代码来完成,复制一个数据帧:

^{pr2}$

有没有一种方法可以在不使用中间数据帧的情况下做到这一点?在


Tags: 数据方法代码test情况ok条件metric
3条回答

我认为您的解决方案很好,也可以将两行代码连接在一起,返回一行DataFrame

df = df.loc[[df.loc[df.test_a == 'OK', 'metric_e'].idxmin()]]
print (df)
  test_a test_b  metric_e
2     OK    NOK         2

使用代码的输出,可以尝试使用:

df[df.metric_e==df.loc[df.test_a.eq('OK'),'metric_e'].min()].T

            2
test_a     OK
test_b    NOK
metric_e    2

如果不想转置:

^{pr2}$

使用^{}

df[df['test_a']=='OK'].nsmallest(1, 'metric_e')

输出:

^{pr2}$

相关问题 更多 >

    热门问题