如何将最后一个值与 pandas 数据框中的前 6 个值进行比较?
How to compare last value to previous 6 values in pandas dataframe?
有没有办法查明最后一个值是否在前六天值的较低 50% 范围内?我想添加另一列显示是或否。我尝试对前六个进行排序以获得中间值,但无法将其与最后一个进行比较 and/or 使其迭代以填充新列。我的数据如下所示:
Date Open High Low Close Adj Close Volume
2020-12-14 3675.270020 3697.610107 3645.840088 3647.489990 3647.489990 4594920000
2020-12-15 3666.409912 3695.290039 3659.620117 3694.620117 3694.620117 4360280000
2020-12-16 3696.250000 3711.270020 3688.570068 3701.169922 3701.169922 4056950000
2020-12-17 3713.649902 3725.120117 3710.870117 3722.479980 3722.479980 4184930000
2020-12-18 3722.389893 3726.699951 3685.840088 3709.409912 3709.409912 7068340000
我花了 5-6 个小时在谷歌上搜索并尝试无济于事,非常感谢任何形式的指导
理解你的问题是询问前一天的收盘价与前六天的平均价的比率,我创建了以下代码。将检索到的股票的收盘价按降序排列。在新列中,使用滚动函数计算六天平均值并将其相加。然后移动数据以使新列与要比较的收盘价对齐。然后我们添加了比率计算。
import yfinance as yf
data = yf.download("AAPL", start="2020-11-17", end="2020-12-18")['Adj Close'].to_frame()
data.sort_index(ascending=False, inplace=True)
data['pre_6'] = data.rolling(6).mean()
data['pre_6'] = data['pre_6'].shift(-5)
data['check'] = data['Adj Close'] /data['pre_6']
data
Adj Close pre_6 check
Date
2020-12-17 128.699997 125.303332 1.027108
2020-12-16 127.809998 124.149999 1.029480
2020-12-15 127.879997 123.578332 1.034809
2020-12-14 121.779999 122.889999 0.990968
2020-12-11 122.410004 122.968333 0.995460
2020-12-10 123.239998 123.056666 1.001490
2020-12-09 121.779999 123.030000 0.989840
2020-12-08 124.379997 123.186667 1.009687
2020-12-07 123.750000 122.298335 1.011870
2020-12-04 122.250000 121.105001 1.009455
2020-12-03 122.940002 120.068334 1.023917
2020-12-02 123.080002 118.773333 1.036260
2020-12-01 122.720001 117.234999 1.046786
2020-11-30 119.050003 116.338332 1.023308
2020-11-27 116.589996 116.269998 1.002752
2020-11-25 116.029999 116.509998 0.995880
2020-11-24 115.169998 117.069998 0.983770
2020-11-23 113.849998 117.924999 0.965444
2020-11-20 117.339996 NaN NaN
2020-11-19 118.639999 NaN NaN
2020-11-18 118.029999 NaN NaN
2020-11-17 119.389999 NaN NaN
2020-11-16 120.300003 NaN NaN
有没有办法查明最后一个值是否在前六天值的较低 50% 范围内?我想添加另一列显示是或否。我尝试对前六个进行排序以获得中间值,但无法将其与最后一个进行比较 and/or 使其迭代以填充新列。我的数据如下所示:
Date Open High Low Close Adj Close Volume
2020-12-14 3675.270020 3697.610107 3645.840088 3647.489990 3647.489990 4594920000
2020-12-15 3666.409912 3695.290039 3659.620117 3694.620117 3694.620117 4360280000
2020-12-16 3696.250000 3711.270020 3688.570068 3701.169922 3701.169922 4056950000
2020-12-17 3713.649902 3725.120117 3710.870117 3722.479980 3722.479980 4184930000
2020-12-18 3722.389893 3726.699951 3685.840088 3709.409912 3709.409912 7068340000
我花了 5-6 个小时在谷歌上搜索并尝试无济于事,非常感谢任何形式的指导
理解你的问题是询问前一天的收盘价与前六天的平均价的比率,我创建了以下代码。将检索到的股票的收盘价按降序排列。在新列中,使用滚动函数计算六天平均值并将其相加。然后移动数据以使新列与要比较的收盘价对齐。然后我们添加了比率计算。
import yfinance as yf
data = yf.download("AAPL", start="2020-11-17", end="2020-12-18")['Adj Close'].to_frame()
data.sort_index(ascending=False, inplace=True)
data['pre_6'] = data.rolling(6).mean()
data['pre_6'] = data['pre_6'].shift(-5)
data['check'] = data['Adj Close'] /data['pre_6']
data
Adj Close pre_6 check
Date
2020-12-17 128.699997 125.303332 1.027108
2020-12-16 127.809998 124.149999 1.029480
2020-12-15 127.879997 123.578332 1.034809
2020-12-14 121.779999 122.889999 0.990968
2020-12-11 122.410004 122.968333 0.995460
2020-12-10 123.239998 123.056666 1.001490
2020-12-09 121.779999 123.030000 0.989840
2020-12-08 124.379997 123.186667 1.009687
2020-12-07 123.750000 122.298335 1.011870
2020-12-04 122.250000 121.105001 1.009455
2020-12-03 122.940002 120.068334 1.023917
2020-12-02 123.080002 118.773333 1.036260
2020-12-01 122.720001 117.234999 1.046786
2020-11-30 119.050003 116.338332 1.023308
2020-11-27 116.589996 116.269998 1.002752
2020-11-25 116.029999 116.509998 0.995880
2020-11-24 115.169998 117.069998 0.983770
2020-11-23 113.849998 117.924999 0.965444
2020-11-20 117.339996 NaN NaN
2020-11-19 118.639999 NaN NaN
2020-11-18 118.029999 NaN NaN
2020-11-17 119.389999 NaN NaN
2020-11-16 120.300003 NaN NaN