Pandas: добавочный столбец с условием

107
6

У меня есть данные временного ряда (акции), как показано ниже:

                 Date  PX_OPEN  PX_LAST
Date
2011-01-03 2011-01-03 31.18 31.26
2011-01-04 2011-01-04 31.42 31.02
2011-01-05 2011-01-05 31.10 30.54
2011-01-06 2011-01-06 30.66 30.54
2011-01-07 2011-01-07 31.50 30.66
2011-01-10 2011-01-10 30.82 30.94

Я хотел бы добавить новый столбец GAP на основе следующих условий:

    Если текущий день открыт выше предыдущего дня, тогда GAP = up. Если текущий день открыт ниже предыдущего дня, тогда GAP = down. В противном случае GAP = unch. (В качестве альтернативы, вверх можно изменить на +1, вплоть до -1, а unch - на 0.)

Я могу сделать это с помощью циклов if и for, но это приведет к поражению эффективности верифицированной операции в Pandas. Может ли кто-нибудь помочь?

спросил(а) 2016-12-12T18:05:00+03:00 3 года, 10 месяцев назад
1
Решение
70

Используйте вложенные вызовы np.where:

import numpy as np
df['GAP'] = np.where(df['PX_OPEN'] > df['PX_LAST'].shift(), 'up',
np.where(df['PX_OPEN'] < df['PX_LAST'].shift(), 'down', 'unch'))

ответил(а) 2016-12-12T18:12:00+03:00 3 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема