Получение наименьшего значения столбца в последних n строках - PullRequest
0 голосов
/ 28 июня 2018

Название этого может быть немного запутанным, но я постараюсь объяснить, что я пытаюсь сделать. У меня есть OHLC CSV акций. Я пытаюсь добавить новый столбец с именами L и H. Вот что представляет. Мне нужно проверить наименьшую цену открытия за последние n дней (скажем, 5). и мне нужно установить его Низкая цена на L и Высокая цена как H.

Вот мой Dataframe

            Date     Open     High      Low
5303  2018-06-11  1681.51  1694.24  1680.59
5304  2018-06-12  1693.00  1699.51  1691.52
5305  2018-06-13  1702.81  1713.75  1700.12
5306  2018-06-14  1713.48  1724.80  1708.87
5307  2018-06-15  1714.00  1720.87  1708.52
5308  2018-06-18  1706.26  1726.74  1702.56
5309  2018-06-19  1709.04  1736.11  1700.39
5310  2018-06-20  1742.50  1762.93  1741.36
5311  2018-06-21  1760.00  1763.10  1717.56
5312  2018-06-22  1742.62  1743.00  1711.90

Я пробовал следующий способ, но он возвращает только минимальное значение, а не серии, которые я могу захватить High и Low

df['Open'].rolling(5).min()

Здесь я пытаюсь получить индекс или целую серию Dataframe rolling(), чтобы получить значения High и Low этого перехода. Я надеюсь, что смогу объяснить.

EDIT: добавлен ожидаемый результат

Допустим, индекс 5308 является наименьшим открытием за последние 5 строк. Таким образом, L будет равен 5308 Low столбцу, а H будет равен 5308 High столбцу в остальных данных

            Date     Open     High      Low        H        L
5309  2018-06-19  1709.04  1736.11  1700.39  1726.74  1702.56
5310  2018-06-20  1742.50  1762.93  1741.36  1726.74  1702.56
5311  2018-06-21  1760.00  1763.10  1717.56  1726.74  1702.56
5312  2018-06-22  1742.62  1743.00  1711.90  1726.74  1702.56

1 Ответ

0 голосов
/ 28 июня 2018

IIUC, используйте idxmin в применении с прокаткой:

df[['L','H']] = (df.reindex(df['Open'].rolling(5)
                                      .apply(lambda x: x.idxmin(), 
                                             raw=False))[['Low','High']].values)

Выход:

            Date     Open     High      Low        L        H
5303  2018-06-11  1681.51  1694.24  1680.59      NaN      NaN
5304  2018-06-12  1693.00  1699.51  1691.52      NaN      NaN
5305  2018-06-13  1702.81  1713.75  1700.12      NaN      NaN
5306  2018-06-14  1713.48  1724.80  1708.87      NaN      NaN
5307  2018-06-15  1714.00  1720.87  1708.52  1680.59  1694.24
5308  2018-06-18  1706.26  1726.74  1702.56  1691.52  1699.51
5309  2018-06-19  1709.04  1736.11  1700.39  1700.12  1713.75
5310  2018-06-20  1742.50  1762.93  1741.36  1702.56  1726.74
5311  2018-06-21  1760.00  1763.10  1717.56  1702.56  1726.74
5312  2018-06-22  1742.62  1743.00  1711.90  1702.56  1726.74
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...