У меня есть датафрейм, содержащий открытие / закрытие, цвет свечи и количество последовательных свечей.
date open close color run
00:01:00 100 102 g 1
00:02:00 102 104 g 2
00:03:00 104 106 g 3
00:04:00 106 105 r 1
00:05:00 105 101 r 2
00:06:00 101 102 g 1
00:06:00 102 103 g 2
Я пытаюсь вычислить абсолютное значение разницы между открытием первой свечи в серии и закрытием последней свечи в серии и применить разницу к каждой линии. Результат будет выглядеть как
date open close color run run_length
00:01:00 100 102 g 1 2 # abs(100 - 102)
00:02:00 102 104 g 2 4 # abs(100 - 104)
00:03:00 104 106 g 3 6 # abs(100 - 106)
00:04:00 106 105 r 1 1 # abs(106 - 105)
00:05:00 105 101 r 2 5 # abs(106 - 101)
00:06:00 101 102 g 1 1 # abs(101 - 102)
00:06:00 102 103 g 2 2 # abs(101 - 103)
Я прочитал два других поста, которые близки, но не совсем нашли решение, которое я ищу:
получить первое и последнее значения в группе
Количество панд последовательных вхождений в предыдущих строках
Я использую df.groupby((df['color'] != df['color'].shift()).cumsum())
, чтобы сгруппировать строки по цвету свечи (так я рассчитал цвет и счетчик пробежек), и я могу получить первое и последнее значения группы, используя .agg(['first', 'last']).stack()
, но это не позволяет мне применять разницу на строку исходного кадра данных.