在时间循环中使用带条件on count的np.where()

2024-05-04 02:11:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用np.where()来指定一个新的df列df['avg_gain'],其中的值来自另外两个df列中的一个df['avg_gain_0']df['avg_gain_n'],使用的值由时间循环中的循环数('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))

用于df['gain']np.where()函数工作得很好,但我收到了一个

positional argument after keyword argument

用于df['avg_gain']np.where()函数出错

我该如何解决?谢谢你的帮助。谢谢


Tags: 函数dfclosetimecountnp时间float
1条回答
网友
1楼 · 发布于 2024-05-04 02:11:07

您对np的调用,其中包含count=0(带有一个单音“=”, 解释为命名(关键字)参数的内容

np中,其中第一个参数是条件。 因此,您可能应该将此说明更改为:

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

double“=”)

相关问题 更多 >