Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如果任何列中的值介于两个值之间,请选择DataFrame中的行_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 3.x 如果任何列中的值介于两个值之间,请选择DataFrame中的行

Python 3.x 如果任何列中的值介于两个值之间,请选择DataFrame中的行,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我已经查过了,我认为我所做的应该是有效的,但事实并非如此。第一个条件(>=80)正在评估中,但第二个条件(=80)。任何(1)和(df1.valuesAh,我得到了。我需要。所有(1)对于Ah,我得到了。我需要。所有(1)对于这里是另一个想法,分离遮罩并使用&来连接: import pandas as pd df = pd.DataFrame({'AP-1': [30, 32, 34, 31, 33, 35, 36, 38, 37], 'AP-2': [3

我已经查过了,我认为我所做的应该是有效的,但事实并非如此。第一个条件(>=80)正在评估中,但第二个条件(=80)。任何(1)和(df1.valuesAh,我得到了。我需要。所有(1)对于Ah,我得到了。我需要。所有(1)对于这里是另一个想法,分离遮罩并使用&来连接:

import pandas as pd

df = pd.DataFrame({'AP-1': [30, 32, 34, 31, 33, 35, 36, 38, 37],
                   'AP-2': [30, 32, 34, 80, 33, 35, 36, 38, 37],
                   'AP-3': [30, 32, 81, 31, 33, 101, 36, 38, 37],
                   'AP-4': [30, 32, 34, 95, 33, 35, 103, 38, 121],
                   'AP-5': [30, 32, 34, 31, 33, 144, 36, 38, 37],
                   'AP-6': [30, 32, 34, 31, 33, 35, 36, 110, 37],
                   'AP-7': [30, 87, 34, 31, 111, 35, 36, 38, 122],
                   'AP-8': [30, 32, 99, 31, 33, 35, 36, 38, 37],
                   'AP-9': [30, 32, 34, 31, 33, 99, 88, 38, 37]}, 
                   index=['1', '2', '3', '4', '5', '6', '7', '8', '9'])

# This is the actual frame you want
df = df.transpose()

m1 = (df >= 80).any(1) 
m2 = ~(df >= 100).any(1) #<-- Invert the statement with ~

df2 = df.loc[m1&m2]
print(df2)

下面是另一个想法,分离遮罩并使用&来连接:

import pandas as pd

df = pd.DataFrame({'AP-1': [30, 32, 34, 31, 33, 35, 36, 38, 37],
                   'AP-2': [30, 32, 34, 80, 33, 35, 36, 38, 37],
                   'AP-3': [30, 32, 81, 31, 33, 101, 36, 38, 37],
                   'AP-4': [30, 32, 34, 95, 33, 35, 103, 38, 121],
                   'AP-5': [30, 32, 34, 31, 33, 144, 36, 38, 37],
                   'AP-6': [30, 32, 34, 31, 33, 35, 36, 110, 37],
                   'AP-7': [30, 87, 34, 31, 111, 35, 36, 38, 122],
                   'AP-8': [30, 32, 99, 31, 33, 35, 36, 38, 37],
                   'AP-9': [30, 32, 34, 31, 33, 99, 88, 38, 37]}, 
                   index=['1', '2', '3', '4', '5', '6', '7', '8', '9'])

# This is the actual frame you want
df = df.transpose()

m1 = (df >= 80).any(1) 
m2 = ~(df >= 100).any(1) #<-- Invert the statement with ~

df2 = df.loc[m1&m2]
print(df2)

谢谢。我对pandas很陌生,从来没有见过像您在这里介绍的那样的实现。我想我更喜欢您的实现。@标记您如何编写代码是一个偏好问题。但是我更喜欢多行而不是少行(认为这样更清楚)。您使用m2=~(df>=100)有什么原因吗?与m2相对的任何(1)行=(df@MarkS主要是因为你是如何解决这个问题的:
如果任何列的值大于100,那么就排除它。
哦,我想我明白了。虽然它们产生的结果相当,但在一个大的数据集上,你的可能会运行得更快。任何一个都会更快终止。所有人每次都必须检查每一列。任何一个都会找到一个实例违反了我的要求,并当场选择退出。谢谢。我对pandas很陌生,从未见过像您在这里介绍的那样的实现。我想我更喜欢您的实现。@标记您如何编写代码是一个偏好问题。不过,我更喜欢多行而不是少行(这样更清楚).你选择m2=~(df>=100)有什么原因吗(df@MarkS主要是因为你是如何解决这个问题的:
如果任何列的值大于100,那么就排除它。
哦,我想我明白了。虽然它们产生的结果相当,但在一个大的数据集上,你的可能会运行得更快。任何一个都会更快终止。所有人每次都必须检查每一列。任何一个都会找到一个实例违反了我的要求,并当场选择退出。
      1   2   3   4   5   6   7   8   9
AP-2  30  32  34  80  33  35  36  38  37
AP-8  30  32  99  31  33  35  36  38  37
AP-9  30  32  34  31  33  99  88  38  37