【发布时间】:2022-01-27 02:15:05
【问题描述】:
我的目标是在数据框中找到临时最小值。为了找到它们,我在数据框列中搜索低于前 3 个值的最小值的值。在 Windows 中在 Google Colab 和 python 3.9 中测试。
也许还有其他更多的Pandastic方式来做到这一点。
问题:使用<= 时似乎一切正常,但使用< 时,却什么也没找到。即使提供的数据应该匹配。
import pandas as pd
data_list = [55,66,77,88,99,88,77,66,55,54,65,67,68,70,73,78,83] # use any other values
low = pd.Series(data_list)
df = pd.DataFrame(low.values, columns=['Low'])
df
Low
0 55
1 66
2 77
3 88
4 99
5 88
6 77
7 66
8 55
...
df.plot(grid=True)
当试图找到低于前 3 行 OR EQUAL 的值时,一切正常:
df[df['Low'] <= df['Low'].rolling(3).min()]
Low
5 88
6 77
7 66
8 55
9 54
问题:但是当只使用 运算符时,什么也没找到。
df[df['Low'] < df['Low'].rolling(3).min()]
这是 google colab (python 3.7) 中使用的版本,已更新:
!pip install numpy --upgrade
!pip install pandas --upgrade
!pip freeze ...
numpy==1.21.5
pandas==1.3.5
使用本地 Python 3.9 时,行为相同。
【问题讨论】:
-
根据您提供的数据,这种行为是预期的,只有
<=有效,因为当它为这些行返回True时,它们实际上是==