如何在数组中查找下一个最大值

时间:2017-07-22 14:03:02

标签: python pandas numpy dataframe quantitative-finance

我希望在以下相同数组中获取第一个Max值后找到下一个最大值:

             Open    High     Low   Close    Volume
Date                                                
2017-07-03  370.24  371.35  351.50  352.62   6305401
2017-07-05  347.20  347.24  326.33  327.09  17046701
2017-07-06  317.26  320.79  306.30  308.83  19324495
2017-07-07  313.50  317.00  307.38  313.22  14176915
2017-07-10  312.90  317.94  303.13  316.05  13820889
2017-07-11  316.00  327.28  314.30  327.22  11559402
2017-07-12  330.40  333.10  324.50  329.52  10346127
2017-07-13  330.11  331.60  319.97  323.41   8594466
2017-07-14  323.19  328.42  321.22  327.78   5625211
2017-07-17  325.54  327.10  313.45  319.57   9876912
2017-07-18  317.50  329.13  315.66  328.24   6373720
2017-07-19  328.23  331.65  323.22  325.26   6357014
2017-07-20  326.90  330.22  324.20  329.92   5166188
2017-07-21  329.46  331.26  325.80  328.40   4901606

import datetime as dt
from datetime import timedelta as td
import matplotlib.pyplot as plt
from matplotlib import style
import pandas as pd
import pandas_datareader.data as web
import numpy as np

start = dt.datetime(2017, 7, 1)
# retrieving data from google
df = web.DataReader('TSLA', 'google', start)
Dates = df.index
Highs = df['High'] # Getting only the values from the 'High' Column.
Highest_high = np.amax(Highs)  # returns the Highest value
> 371.35 #Output

Highests_index = Highs.argmax()  # returns the index of Highest value
> 2017-07-03 00:00:00 #Output
Highest_high_2 = ? # Highest High excluding the previous high discovered.
Highest_index_2 = ? # shall have index of the above Highest_high_2.

如何查找Highest_high_2Highest_index_2

我用numpy的argmax()找到最大值的索引,用amax找到最大的值。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以编写如下代码:

a = np.array([10, 18, 20, 8, 15])
arg_max = a.argsort()[-2:][::-1]
highest_1 = a[arg_max[0]] #20
highest_2 = a[arg_max[1]] #18

答案 1 :(得分:1)

你可以这样做,

Highest_high_2 = df['High'].sort_values()[-2]

Highest_index_2 = df['High'].sort_values().index[-2]