在时间循环中使用带有条件计数的 np.where()



我想使用 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()函数运行良好,但我收到一个

关键字参数后的位置参数

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

我该如何解决?任何帮助表示赞赏。谢谢。

您对np.where的调用包含 count =0(带有单个"="(, 解释为命名(关键字(参数的内容。

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

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

("="(。

最新更新