Если вы просто хотите узнать максимальное значение для данной акции, используйте loc.
stock_data = df.loc[df['stock name'][-200:].idxmax()]
, которая дает вам строку, содержащую максимальное значение за последние 200 дней всех акций для этогоданный запас, что означает, что вам нужно избавиться от остальных.
index = stock_data.name
value = stock_data['stock name']
Это не симпатичное решение, но оно работает.
Тот, который делает то же самое для всехis:
# create a temporary data frame with the last 200 days
df_200 = df[-200:]
res = []
# go through each stock
for stock in list(df):
df_t = df_200.loc[df_200[stock].idxmax()]
value = df_t[stock]
index = df_t.name
res.append([index, stock, value])
Затем вы можете сохранять / использовать результаты по своему усмотрению.