Вычислить столбец pandas кадра данных, не использующий циклы for - PullRequest
0 голосов
/ 09 июля 2020

У меня есть такой фрейм данных,

Date        Open    High to Low   X
27-Feb-15   A           P         x1
26-Feb-15   B           Q         x2
25-Feb-15   C           R         x3
24-Feb-15   D           S         x4

мне нужно вычислить значения столбца X, как показано ниже,

x1 = (P+Q)/B
x2 = (Q+R)/C
   '
   '

есть ли способ сделать это без использования циклов for используя pandas?

1 Ответ

2 голосов
/ 09 июля 2020

Используйте Rolling.sum с делением на Series.div:

print (df)
        Date  Open  High to Low   X
0  27-Feb-15    10            1  x1
1  26-Feb-15    20            2  x2
2  25-Feb-15    50            3  x3
3  24-Feb-15   100            4  x4

df['X'] = df['High to Low'].rolling(2).sum().div(df['Open'])
print (df)
        Date  Open  High to Low     X
0  27-Feb-15    10            1   NaN
1  26-Feb-15    20            2  0.15
2  25-Feb-15    50            3  0.10
3  24-Feb-15   100            4  0.07

При необходимости сдвиньте данные, добавьте Series.shift:

df['X'] = df['High to Low'].rolling(2).sum().div(df['Open']).shift(-1)
print (df)
        Date  Open  High to Low     X
0  27-Feb-15    10            1  0.15
1  26-Feb-15    20            2  0.10
2  25-Feb-15    50            3  0.07
3  24-Feb-15   100            4   NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...