Python 熊猫删除值小于给定值的行

Python 熊猫删除值小于给定值的行,python,pandas,Python,Pandas,我想删除只包含小于10且大于25的值的行。我的示例数据框如下所示: a b c 1 2 3 4 5 16 11 24 22 26 50 65 预期输出: a b c 1 2 3 4 5 16 26 50 65 因此,如果该行包含任何小于10或大于25的值,则该行将保留在dataframe中,否则,需要删除该行 有没有什么方法可以通过Pandas实现这一点,而不是遍历所有行?您可以调用并将结果返回

我想删除只包含小于10且大于25的值的行。我的示例数据框如下所示:

a   b   c  
1   2   3  
4   5   16  
11  24  22  
26  50  65  
预期输出:

a   b   c  
1   2   3  
4   5   16   
26  50  65  
因此,如果该行包含任何小于10或大于25的值,则该行将保留在dataframe中,否则,需要删除该行

有没有什么方法可以通过Pandas实现这一点,而不是遍历所有行?

您可以调用并将结果返回到名为“Keep”的新列。然后可以使用此列删除不需要的行

import pandas as pd
l = [[1,2,3],[4,5,6],[11,24,22],[26,50,65]]
df = pd.DataFrame(l, columns = ['a','b','c']) #Set up sample dataFrame

df['keep'] = df.apply(lambda row: sum(any([(x < 10) or (x > 25) for x in row])), axis = 1)
你可以用

drop_df=df.loc[(df25)).any(1)]

  • 祝你好运。我希望你能处理好你的争吵。仅供参考,这不是你问问题的方式。你应该表现出最小的努力。如果您有足够的资源在这里提问,那么您就有足够的资源进行自我搜索。为什么第一行和最后一行仍然在您的预期输出中?这毫无意义。你能更好地解释一下你的删除标准吗?如果任何值小于10且大于25,是否删除一行?还是所有的价值观?示例输入和输出没有意义如果行有任何一个值小于10或大于25,那么该行将保留在数据帧中,否则它需要删除。回答得很好!我是熊猫的新手,我想知道在数据帧上“循环”是否更有效。我不知道panda的数据帧是如何在引擎盖下实现的,但这看起来像是重复了两次。你能给我解释一下吗?Apply函数只是循环的语法糖。即使您编写了一个for循环来迭代所有行,我也不确定是否有一种方法可以动态删除行。
        a   b   c  keep
    0   1   2   3     1
    1   4   5   6     1
    2  11  24  22     0
    3  26  50  65     1
    
    
    df = df[df['keep'] == 1] #Drop unwanted rows
    
    dropped_df = df.loc[((df<10) | (df>25)).any(1)]