如何在某个窗口中找到滚动的min()或max()索引值?

时间:2019-10-10 16:44:41

标签: python python-3.x pandas dataframe

我当前正在运行Python 3.7.4,对Python编程来说有些新意。我有股票收盘价的时间序列数据。我正在使用“滚动”功能在数据框中创建新列,以计算60天期间的滚动最小和最大点差(即范围)。

df['max'] = df['Close'].rolling(window=60, min_periods=60).max()
df['min'] = df['Close'].rolling(window=60, min_periods=60).min()
df['range'] = df['max'] - df['min']

我遇到的麻烦是要知道60天之内是最小值首先出现还是最大值首先出现。我想在数据框中创建一个新列,该列为我提供一个标志,告诉我最小值或最大值是最先出现的(例如,如果在连续60天的时间段内df['flag'] = 1; else df['flag'] = -1的最小索引值小于<最大索引值)。

我使用它作为一种简单的方法来判断股价在每个滚动期内是上涨还是下跌。

我尝试使用'if'语句,但是由于“具有多个元素的数组的真实值”错误而遇到了一些问题:

if df['Close'].rolling(window=60, min_periods=60).max().index.values > df['Close'].rolling(window=60, min_periods=60).max().index.values:
    df['flag'] = 1
else:
    df['flag'] = -1

感谢您的帮助。

0 个答案:

没有答案