繁体   English   中英

如何使用 pandas 数据框(Python)查找 52 周最高日期和 52 周最低日期?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM