Python 在数据框中查找值介于x和y之间的单元格
我希望数据帧中的所有值都为真/假,这取决于该值是否在给定的x和y之间 使用“AND”运算符组合2个数据帧,或使用pandas的任何“between”功能都很好。我不希望在列上循环并调用pandas.Series.between(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 我想
>>> 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()