Мой фрейм данных:
A B C A_Q B_Q C_Q
27 40 41 2 1 etc
28 39 40 1 5
30 28 29 3 6
28 27 28 4 1
15 10 11 5 4
17 13 14 1 5
16 60 17 8 10
14 21 18 9 1
20 34 23 10 2
21 45 34 7 4
Я хочу перебрать каждую строку в каждом столбце с суффиксом _Q, начиная с A_Q, и выполнить следующее:
- если значение строки = '1', возьмите соответствующее значение в столбце 'A'
- присвойте это значение переменной, назовите его x
- продолжайте цикл вниз по кольцу A_Q
- если значение строки равно 1,2,3,4,5,6,7,8 или 9, игнорировать
- если значение равно 10, то получить соответствующее значение в столбце 'A' и присвоить его переменной y
- рассчитать% изменения, назовите его chg, между y и x: (y / x) -1) * 100
- добавить chg к фрейму данных
- продолжайте идти вниз по колонке с шагами 1-7 выше до конца
Затем сделайте то же самое для других столбцов B_Q, C_Q и т. Д.
Так, например, в приведенном выше первом появившемся «1» соответствует 28 в столбце А. Итак, x = 28. Затем продолжайте итерацию, игнорируя значения от 1 до 9, пока не получите 10, что соответствует 20 в столбце A. Рассчитайте% изменений = ((20/27) -1) * 100 = -25,9% и добавьте это к df во вновь созданном столбце A_S. Затем продолжите с этого момента теми же шагами, пока не дойдете до конца файла. И, наконец, сделайте то же самое для остальных столбцов.
Итак, df будет выглядеть так:
A B C A_Q B_Q C_Q A_S B_S C_S etc
27 40 41 2 1 etc
28 39 40 1 5
30 28 29 3 6
28 27 28 4 1
15 10 11 5 4
17 13 14 1 5
16 60 17 8 10 50
14 21 18 9 1
20 34 23 10 2 -25.9
21 45 34 7 4
Я думал создать функцию, а затем сделать что-то вроде df ['_S'] = df.apply ( function, axis =1)
, но застрял в реализации описанных выше шагов 1-8. Спасибо!