Найти дату и значение максимума столбца, используя pandas groupby - PullRequest
1 голос
/ 06 октября 2019

Я пытаюсь найти даты, когда wipro close price было max за year. (Какую дату и по какой цене?) Вот пример кода, который я пробовал:

import pandas as pd
import numpy as np
from nsepy import get_history
import datetime as dt

start = dt.datetime(2015, 1, 1)
end = dt.datetime.today()
wipro=get_history(symbol='WIPRO', start = start, end = end)
wipro.index = pd.to_datetime(wipro.index)

# This should get me my grouped results
wipro_agg = wipro.groupby(wipro.index.year).Close.idxmax()

Ответы [ 2 ]

0 голосов
/ 06 октября 2019

Вы можете просто вызвать «max» так же, как вы назвали «idxmax»

In [25]: df_ids = pd.DataFrame(wipro.groupby(wipro.index.year).Close.idxmax())
In [26]: df_ids['price'] = wipro.groupby(wipro.index.year).Close.max()
In [27]: df_ids.rename({'Close': 'date'}, axis= 1).set_index('date')
Out[27]: 
             price
date
2015-03-03  672.45
2016-04-20  601.25
2017-06-06  560.55
2018-12-19  340.70
2019-02-26  387.65
0 голосов
/ 06 октября 2019

Для решения этой проблемы требуется 2 шага. Во-первых, получить максимальную цену каждый год. Затем найдите точную дату этого экземпляра.

# Find max price each year:
# note: specific format to keep as a dataframe
wipro_max_yr = wipro.groupby(wipro.index.dt.year)[['Close']].max()

# Now, do an inner join to find exact dates
wipro_max_dates = wipro_max_yr.merge(wipro, how='inner')
...