根据 Pandas 中的条件过滤行

Posted

技术标签:

【中文标题】根据 Pandas 中的条件过滤行【英文标题】:Filter rows based on condition in Pandas 【发布时间】:2022-01-01 04:23:03 【问题描述】:

我有包含样本号、组号和准确度的数据框 df_groups。

Tabel 1: Samples with their groups
    +----+----------+------------+------------+
    |    |   sample |   group    |   Accuracy |
    |----+----------+------------+------------|
    |  0 |        0 |          6 |    91.6    |
    |  1 |        1 |          4 |    92.9333 |
    |  2 |        2 |          2 |    91      |
    |  3 |        3 |          2 |    90.0667 |
    |  4 |        4 |          4 |    91.8    |
    |  5 |        5 |          5 |    92.5667 |
    |  6 |        6 |          6 |    91.1    |
    |  7 |        7 |          5 |    92.3333 |
    |  8 |        8 |          2 |    92.7667 |
    |  9 |        9 |          0 |    91.1333 |
    | 10 |       10 |          4 |    92.5    |
    | 11 |       11 |          5 |    92.4    |
    | 12 |       12 |          7 |    93.1333 |
    | 13 |       13 |          7 |    93.5333 |
    | 14 |       14 |          2 |    92.1    |
    | 15 |       15 |          6 |    93.2    |
    | 16 |       16 |          8 |    92.7333 |
    | 17 |       17 |          8 |    90.8    |
    | 18 |       18 |          3 |    91.9    |
    | 19 |       19 |          3 |    93.3    |
    | 20 |       20 |          5 |    90.6333 |
    | 21 |       21 |          9 |    92.9333 |
    | 22 |       22 |          4 |    93.3333 |
    | 23 |       23 |          9 |    91.5333 |
    | 24 |       24 |          9 |    92.9333 |
    | 25 |       25 |          1 |    92.3    |
    | 26 |       26 |          9 |    92.2333 |
    | 27 |       27 |          6 |    91.9333 |
    | 28 |       28 |          5 |    92.1    |
    | 29 |       29 |          8 |    84.8    |
    +----+----------+------------+------------+

我想返回一个具有上述任何精度的数据帧(例如 92)。 所以结果会是这样的

Tabel 1: Samples with their groups when accuracy above 92. 
        +----+----------+------------+------------+
        |    |   sample |   group    |   Accuracy |
        |----+----------+------------+------------|
        |  1 |        1 |          4 |    92.9333 |    
        |  2 |        5 |          5 |    92.5667 |  
        |  3 |        7 |          5 |    92.3333 |
        |  4 |        8 |          2 |    92.7667 |
        | 5  |       10 |          4 |    92.5    |
        | 6  |       11 |          5 |    92.4    |
        | 7  |       12 |          7 |    93.1333 |
        | 8  |       13 |          7 |    93.5333 |
        | 9  |       14 |          2 |    92.1    |
        | 10 |       15 |          6 |    93.2    |
        | 11 |       16 |          8 |    92.7333 |   
        | 12 |       19 |          3 |    93.3    |
        | 13 |       21 |          9 |    92.9333 |
        | 14 |       22 |          4 |    93.3333 |
        | 15 |       24 |          9 |    92.9333 |
        | 16 |       25 |          1 |    92.3    |
        | 17 |       26 |          9 |    92.2333 |
        | 18 |       28 |          5 |    92.1    | 
        +----+----------+------------+------------+

因此,结果将基于大于或等于预定义精度(例如 92、90 或 85 等)的条件返回。

【问题讨论】:

【参考方案1】:

您可以使用df.loc[df['Accuracy'] >= predefined_accuracy]

【讨论】:

谢谢回复

以上是关于根据 Pandas 中的条件过滤行的主要内容,如果未能解决你的问题,请参考以下文章

Pandas常见的数据过滤方法通过列条件筛选行数据

Pandas Pivot Table:按条件过滤时出错

根据列中的条件对数据框中的行进行子集/过滤

Pandas:过滤具有多个字符串条件的行[重复]

使用 groupby 的结果过滤 pandas 数据框

如何在 pandas 中使用过滤条件和 groupby