Использование np.where () с условным числом в цикле времени - PullRequest
0 голосов
/ 12 января 2020

Я хотел бы использовать np.where (), чтобы указать новый столбец df, df['avg_gain'], со значениями из одного из двух других столбцов df, df['avg_gain_0'] или df['avg_gain_n'], со значениями, определенными количество циклов за время l oop (переменная 'count') в качестве условия, как показано ниже:

starttime = time.time()
count = 0 

def x(): 
    klines = client.get_klines(symbol='BTCUSDT', interval=Client.KLINE_INTERVAL_15MINUTE)
    df = pd.DataFrame(klines)
    df.columns = ['timestart', 'open', 'high', 'low', 'close', 'timeend']

    ...

    df['change'] = df.close.astype(float).diff()
    df['gain'] = np.where(df['change'] > 0, df['change'], 0)

    df['avg_gain_0'] = df['gain'].rolling(window=6, center=False).mean()
    df['avg_gain_n'] = ((float(df['avg_gain'].iloc[-1]) * 5) + df['gain']) / 6
    df['avg_gain'] = np.where(count = 0, df['avg_gain_0'], df['avg_gain_n'])

while True:
    try:
        x()
        count += 1
        time.sleep(60.0 - ((time.time() - starttime) % 60.0))

Функция np.where(), используемая для df['gain'], работает отлично, но я получаю

позиционный аргумент после ключевого аргумента

ошибка функции np.where(), используемой для df['avg_gain'].

Как разрешить? Любая помощь приветствуется. Спасибо.

1 Ответ

1 голос
/ 12 января 2020

Ваш вызов np.where содержит count = 0 single"="), что интерпретируется как именованный (ключевое слово) параметр .

В np.where первый аргумент - это условие . Поэтому, вероятно, вам следует изменить эту инструкцию на:

np.where(count == 0, df['avg_gain_0'], df['avg_gain_n'])

( double"=").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...