代码之家  ›  专栏  ›  技术社区  ›  user96564

检查对应于pd.idxmin公司()并使用某些条件进行筛选

  •  0
  • user96564  · 技术社区  · 7 年前

    对不起,我找不到合适的标题。请随意更改。

    这是我的示例数据帧

    ID,Val1,Val2,Val3
    1,10,9,11
    2,14,15,16
    3,17,18,1
    1,22,25,3
    

    我想逐行检查除ID以外的每一列的值,如果有最小值大于4,那么我想删除这些列。 在本例中,ID 1(顶部)和2的最小值大于4。所以我想从数据帧中删除这两行。

    我无法使用列名进行检查,因为在我的真实数据帧中,我会有100个列,而且我甚至不知道它们的名称。

    为了找到每行的最小值,我使用 idxmin

    df1 = df.set_index('ID').idxmin(axis=1).reset_index(name= 'New')
    

    我有这个的输出

    ID   New
     1  Val2
     2  Val1
     3  Val3
     1  Val3
    

    (df1['New] > some conditions) 并根据条件删除这些行。

    例如,在本例中,最终输出是(删除这些行后,最小值大于4)

    ID New
     3  Val3
     1  Val3
    

    或者还有其他更简单的方法吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   BENY    7 年前

    你能做到的 min 第一个数据帧

    df1.loc[df.iloc[:,1:].min(1)<4]
    Out[270]: 
       ID   New
    2   3  Val3
    3   1  Val3