Python.Условие IF с использованием лямбда-функции в кадре данных Pandas - PullRequest
0 голосов
/ 08 марта 2019
df = pd.read_csv('data/eurusd_dukascopy.csv')
df.columns = ['timestamp', 'open', 'high', 'low', 'close', 'volume']
df['oc'] = df.close - df.open

df['uptail'] = df['oc'].apply(lambda x: (df.high - df.close) if x >= 0 else (df.high - df.open))

Выдает ошибку: ValueError: Неверное количество пропущенных элементов 2963, размещение подразумевает 1

Я просто хочу сделать следующее: if df.oc - положительное число, тогда d f.uptail = (df.high - df.close) ... else df.uptail = (df.high - df.open)

Как я могу это проверить?

Ответы [ 2 ]

1 голос
/ 08 марта 2019

np.where здесь больше подходит.

df['uptail'] = np.where(df.close-df.open>=0, df.high-df.close, df.high-df.open)
0 голосов
/ 08 марта 2019

Похоже, вы хотите, чтобы uptail было close - open, если это положительно, и high - open, если close - open отрицательно или 0.

Это можно сделать с помощью следующего кода:

df['uptail'] = df.high - df.open
df.loc[df.close > df.open, 'uptail'] = \
    df.loc[df.close > df.open, 'high'] - df.loc[df.close > df.open, 'close']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...