[英]How to find Date of 52 Week High and date of 52 Week low using pandas dataframe (Python)?
我能够使用以下方法找到 52 周的高点和低点:
df = pd.read_csv(csv_file_name, engine='python')
df['52W H'] = df['HIGH'].rolling(window=252, center=False).max()
df['52W L'] = df['LOW'].rolling(window=252, center=False).min()
有人可以指导我如何找到 52 周的最高日期和 52 周的最低日期吗? 提前致谢。
我的猜测是日期是数据框中的另一列,假设它的名称是“日期”。
你可以尝试类似的东西
df = pd.read_csv(csv_file_name, engine='python')
df['52W H'] = df['HIGH'].rolling(window=252, center=False).max()
df['52W L'] = df['LOW'].rolling(window=252, center=False).min()
df_low = df[df['LOW']== df['52W L'] ]
low_date = df_low['Date']
同样,您可以寻找高价值
如果您共享示例数据框结构,它也会有所帮助。
使用“pandas_datareader”数据。 首先重置索引。 然后,使用 idxmax() 和 idxmin() 函数,找到高点和低点的索引,并根据这些值创建列表。 再次设置“日期”列的索引。 带有索引的列表被输入 df.index。 请注意如何不涉及在 df.index nan 值中设置索引。 High, Low 用你的 df 替换。
import pandas as pd
import pandas_datareader.data as web
import numpy as np
df = web.DataReader('GE', 'yahoo', start='2012-01-10', end='2019-10-09')
df = df.reset_index()
imax = df['High'].rolling(window=252, center=False).apply(lambda x: x.idxmax()).values
imin = df['Low'].rolling(window=252, center=False).apply(lambda x: x.idxmin()).values
count0_imax = np.count_nonzero(np.isnan(imax))
count0_imin = np.count_nonzero(np.isnan(imin))
imax = imax[count0_imax:].astype(int)
imin = imin[count0_imin:].astype(int)
df = df.set_index('Date')
df.loc[df.index[count0_imax]:, '52W H'] = df.index[imax]
df.loc[df.index[count0_imin]:, '52W L'] = df.index[imin]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.