python - 从连续数据帧值中获取最小值

标签 python pandas dataframe

我在 Python Pandas 中有一个数据框:

Date    Open High   Low last    Close
11/30/2018  289.5   290 284.8   286.2   285.8
11/29/2018  283.65  289.3   283.45  288.35  287.55
11/28/2018  285.4   287.95  280.8   282.2   282.2
11/27/2018  286.1   286.45  282.8   284.4   284.85
11/26/2018  281.25  286.35  280.7   285.5   285.65
11/22/2018  282 284.5   279.6   280 280.5
11/21/2018  284.5   284.8   280 282.65  281.75
11/20/2018  285 286.65  281.8   283.5   283.85

我一直在尝试找出后续 3 个值的最小值与当前数据框列值之间的差异,方法是:

min(np.array(df['Low'].shift(1),df['Low'].shift(2),df['Low'] > df['Low'].shift(3))) - **df.Low**

这会返回类似 ValueError 的错误:仅接受 2 个非关键字参数。

请帮助,TIA。

最佳答案

使用 rolling window function将最小 统计 向上移动三位并减去原始 DataFrame。

df - df.rolling(3).min().shift(-3)

>>> df
              Open    High     Low    last   Close
Date                                              
11/30/2018  289.50  290.00  284.80  286.20  285.80
11/29/2018  283.65  289.30  283.45  288.35  287.55
11/28/2018  285.40  287.95  280.80  282.20  282.20
11/27/2018  286.10  286.45  282.80  284.40  284.85
11/26/2018  281.25  286.35  280.70  285.50  285.65
11/22/2018  282.00  284.50  279.60  280.00  280.50
11/21/2018  284.50  284.80  280.00  282.65  281.75
11/20/2018  285.00  286.65  281.80  283.50  283.85
>>>
>>> df.rolling(3).min()
              Open    High    Low   last  Close
Date                                           
11/30/2018     NaN     NaN    NaN    NaN    NaN
11/29/2018     NaN     NaN    NaN    NaN    NaN
11/28/2018  283.65  287.95  280.8  282.2  282.2
11/27/2018  283.65  286.45  280.8  282.2  282.2
11/26/2018  281.25  286.35  280.7  282.2  282.2
11/22/2018  281.25  284.50  279.6  280.0  280.5
11/21/2018  281.25  284.50  279.6  280.0  280.5
11/20/2018  282.00  284.50  279.6  280.0  280.5
>>> 
>>> df.rolling(3).min().shift(-3)
              Open    High    Low   last  Close
Date                                           
11/30/2018  283.65  286.45  280.8  282.2  282.2
11/29/2018  281.25  286.35  280.7  282.2  282.2
11/28/2018  281.25  284.50  279.6  280.0  280.5
11/27/2018  281.25  284.50  279.6  280.0  280.5
11/26/2018  282.00  284.50  279.6  280.0  280.5
11/22/2018     NaN     NaN    NaN    NaN    NaN
11/21/2018     NaN     NaN    NaN    NaN    NaN
11/20/2018     NaN     NaN    NaN    NaN    NaN
>>> 
>>> df.rolling(3).min().shift(-3) - df
            Open  High   Low  last  Close
Date                                     
11/30/2018 -5.85 -3.55 -4.00 -4.00  -3.60
11/29/2018 -2.40 -2.95 -2.75 -6.15  -5.35
11/28/2018 -4.15 -3.45 -1.20 -2.20  -1.70
11/27/2018 -4.85 -1.95 -3.20 -4.40  -4.35
11/26/2018  0.75 -1.85 -1.10 -5.50  -5.15
11/22/2018   NaN   NaN   NaN   NaN    NaN
11/21/2018   NaN   NaN   NaN   NaN    NaN
11/20/2018   NaN   NaN   NaN   NaN    NaN
>>>

关于python - 从连续数据帧值中获取最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53577505/

相关文章:

python - Pandas - 按月累积?

python - 从元组列表中获取唯一元素的问题

Python编程从名称列表中查找相似的名称

python - 比较两个 df 以发现缺失的行

python - Pandas 日期时间间隔重采样到秒

python - 分割数据的分组(pandas)

python - 如何从 pandas 数据框中动态选择子集?

python - Subprocess.poll() 错误地返回一个值

python - 如何在 Python 中生成随机数对,包括一个条目相同的对和排除两个条目相同的对?

r - 如何在 R 中从两个 data.frames 创建一个(不平衡)面板?