Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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 在数据框中查找值介于x和y之间的单元格_Python_Pandas - Fatal编程技术网

Python 在数据框中查找值介于x和y之间的单元格

Python 在数据框中查找值介于x和y之间的单元格,python,pandas,Python,Pandas,我希望数据帧中的所有值都为真/假,这取决于该值是否在给定的x和y之间 使用“AND”运算符组合2个数据帧,或使用pandas的任何“between”功能都很好。我不希望在列上循环并调用pandas.Series.between(x,y)函数 示例 给定以下数据帧 >>> df = pd.DataFrame([{1:1,2:2,3:6},{1:9,2:9,3:10}]) >>> df 1 2 3 0 1 2 6 1 9 9 10 我想

我希望数据帧中的所有值都为真/假,这取决于该值是否在给定的x和y之间

使用“AND”运算符组合2个数据帧,或使用pandas的任何“between”功能都很好。我不希望在列上循环并调用pandas.Series.between(x,y)函数

示例

给定以下数据帧

>>> df = pd.DataFrame([{1:1,2:2,3:6},{1:9,2:9,3:10}])
>>> df
   1  2   3
0  1  2   6
1  9  9  10
我想要x和y之间的所有值。例如,我可以从以下内容开始:

>>> df > 2
       1      2     3
0  False  False  True
1   True   True  True
然后呢

>>> df < 10
      1     2      3
0  True  True   True
1  True  True  False
>>df<10
1     2      3
0对-对-对
1真假
但是

>>> df > 2 and df < 10
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Laurens Koppenol\Anaconda2\lib\site-packages\pandas\core\generic.py", line 731, in __nonzero__
    .format(self.__class__.__name__))
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
>>df>2和df<10
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Users\Laurens Koppenol\Anaconda2\lib\site packages\pandas\core\generic.py”,第731行,非零__
.format(self.\uuuuuu class.\uuuuuuu.\uuuuuu name.\uuuuuuuuu))
ValueError:数据帧的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。

使用带括号的
&
(由于运算符优先级),
不理解如何处理布尔数组,因此警告:

In [64]:
df = pd.DataFrame([{1:1,2:2,3:6},{1:9,2:9,3:10}])
(df > 2) & (df < 10)

Out[64]:
       1      2      3
0  False  False   True
1   True   True  False

请注意,每当您尝试使用
而不是
比较df或序列时,都会出现此警告,您应该使用
,和
~
,因为这些按位运算符了解如何正确处理数组

之间的
是一种方便的方法。但是,它仅适用于系列对象。我们可以通过使用
apply
来解决这个问题,它对序列中的每一行(或每一列)进行操作。或者,将数据帧重塑为具有
堆栈的系列

df.stack().between(2, 10, inclusive=False).unstack()
使用
堆栈
之间
取消堆栈

df.stack().between(2, 10, inclusive=False).unstack()