gpt4 book ai didi

python - 计算日期范围内 Python Pandas 数据框的最大值

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:40 24 4
gpt4 key购买 nike

我有一组股票市场数据,采样如下。

我想计算出每 5 天期间的最高“收盘价”。

symbol  date    open    high    low close   volume
AAU 1-Jan-07 2.25 2.25 2.25 2.25 0
AAU 2-Jan-07 2.25 2.25 2.25 2.25 0
AAU 3-Jan-07 2.32 2.32 2.26 2.26 39800
AAU 4-Jan-07 2.29 2.35 2.27 2.32 114200
AAU 5-Jan-07 2.32 2.32 2.26 2.27 113600
AAU 8-Jan-07 2.27 2.35 2.1 2.33 84500
AAU 9-Jan-07 2.31 2.31 2.21 2.23 54200
AAU 10-Jan-07 2.24 2.3 2.2 2.3 29000
AAU 11-Jan-07 2.23 2.33 2.22 2.24 21400
AAU 12-Jan-07 2.25 2.33 2.25 2.33 45200

为此,我添加了一个新列来计算结束日期范围(+5 天):

df[‘1w_date'] = df[‘date'].shift(-6)

然后 df 看起来像这样:

symbol  date    open    high    low close   volume  5d_date
AAU 1-Jan-07 2.25 2.25 2.25 2.25 0 8-Jan-07
AAU 2-Jan-07 2.25 2.25 2.25 2.25 0 9-Jan-07
AAU 3-Jan-07 2.32 2.32 2.26 2.26 39800 10-Jan-07
AAU 4-Jan-07 2.29 2.35 2.27 2.32 114200 11-Jan-07
AAU 5-Jan-07 2.32 2.32 2.26 2.27 113600 12-Jan-07
AAU 8-Jan-07 2.27 2.35 2.1 2.33 84500 15-Jan-07
AAU 9-Jan-07 2.31 2.31 2.21 2.23 54200 16-Jan-07
AAU 10-Jan-07 2.24 2.3 2.2 2.3 29000 17-Jan-07
AAU 11-Jan-07 2.23 2.33 2.22 2.24 21400 18-Jan-07
AAU 12-Jan-07 2.25 2.33 2.25 2.33 45200 19-Jan-07

接下来我将日期列设置为 df 索引:

df = df.set_index(['date'])

然后我尝试使用“日期”作为开始日期和“5d_date”作为结束日期来遍历每一行。

for i in df:
date_filter = df.loc[df[‘date’]:df[‘5d_date']]
df[‘min_value'] = min(date_filter['low'])
df[‘max_value'] = max(date_filter['high'])

不幸的是,我收到一个 KeyError: 'date'。

我试过很多不同的方法,但不知道该怎么做。有谁知道如何解决这个问题,或者有更好的方法吗?

谢谢。

最佳答案

将索引设置为date后,可以使用pd.DataFrame.rolling:

df.rolling('7d')['close'].mean()
Out[93]:
date
2007-01-01 2.250000
2007-01-02 2.250000
2007-01-03 2.253333
2007-01-04 2.270000
2007-01-05 2.270000
2007-01-08 2.286000
2007-01-09 2.282000
2007-01-10 2.290000
2007-01-11 2.274000
2007-01-12 2.286000
Name: close, dtype: float64

或者,即使不这样做,

df.rolling(5)['close'].mean()
Out[94]:
date
2007-01-01 NaN
2007-01-02 NaN
2007-01-03 NaN
2007-01-04 NaN
2007-01-05 2.270
2007-01-08 2.286
2007-01-09 2.282
2007-01-10 2.290
2007-01-11 2.274
2007-01-12 2.286
Name: close, dtype: float64

取决于您是想要一周 (1) 还是五行数据 (2)。

要将这些中的任何一个放在范围的开头而不是结尾,只需将 .shift(-4) 添加到后者,如果确实恰好有五个,甚至可以添加到前者每周几天,每周。

关于python - 计算日期范围内 Python Pandas 数据框的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44579787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com