检查与pd.idxmin()对应的值,并在某些条件下进行过滤

时间:2018-09-06 17:11:18

标签: python pandas dataframe

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

这是我的示例数据框

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

我想检查ID以外的每一列的逐行值,如果最小数量大于4,那么我想删除那些列。 在这种情况下,ID 1(top)和ID 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 个答案:

答案 0 :(得分:2)

您可以对第一个数据帧进行min

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