После применения оператора сравнения, как вывести в другой столбец - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть некоторые торговые данные в моем dataframe.Я пытаюсь проверить, больше ли значение в одном столбце, чем в другом, на основе пары условий.После этого я хочу создать новый столбец и вывести результат (-1,1 или 0).

for n in range(0,len(df)):
    if df['Close'].iloc[n] > df['Ichi'].iloc[n] and df['Close'].iloc[n-1] < df['Ichi'].iloc[n]:
        print("1")
    elif df['Close'].iloc[n]< df['Ichi'].iloc[n] and df['Close'].iloc[n-1] > df['Ichi'].iloc[n]:
       print("-1")
    else:
       print("0")

Условия: если текущее значение ['Close'] больше текущего ['Ichi'] value и [' Close '] предыдущее значение было меньше, чем current [' Ichi '], затем выведите 1. В противном случае 0. И противоположное должно вывести -1.Я понимаю, как печатать, но не смог вывести его в отдельный столбец.

1 Ответ

0 голосов
/ 23 декабря 2018

В пандах лучше избегать петель, потому что медленный, если существует векторизованное решение, здесь с numpy.select и shift:

m1 = df['Close'] > df['Ichi']
m2 = df['Close'].shift() < df['Ichi']
m3 = df['Close'] < df['Ichi']
m4 = df['Close'].shift() > df['Ichi']

df['new'] = np.select([m1 & m2, m3 & m4], [1,-1], 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...