对不起,我找不到合适的标题。随时更改它。
这是我的示例数据框
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
或者还有其他更简单的方法吗?
答案 0 :(得分:2)
您可以对第一个数据帧进行min
df1.loc[df.iloc[:,1:].min(1)<4]
Out[270]:
ID New
2 3 Val3
3 1 Val3