首页 > 解决方案 > 如何从 np.where() 而不是 True/False 获取单元格的值

问题描述

嗨,我正在尝试让我的代码打印“位置”列中单元格的值,例如,如果“位置”中的前一个单元格很长,它也应该放长,直到它根据“信号”列显示短" 这将返回买入或卖出或“无”。但是,当我这样做时,我实际上得到的是真或假,我假设基于“长”或“短”,但我是新手,所以我可能会弄错。代码做我想要的,如果我们正确选择是长还是短,但是我希望它返回“长”或“短”上面单元格中的值而不是返回 True 或 False(谈论当我将其转换为 csv 时)。

df["Position"] = np.where(df['Signal'].ne("None"),np.where(df[f'Signal'].eq("Buy"), "Long", "Short"), np.where(df["Position"].shift(1).ne("None"), df["Position"].shift(1), "None"))

标签: python-3.xpandasnumpy

解决方案


np.where() 返回条件为真的索引。您可以使用这些索引来获取这些位置的值。这是一个简单的例子:

import numpy as np

a = np.array([1, 2, 3, 4, 0])
mask = np.where(a > 1)
values = a[mask]

>>array([2, 3, 4])

推荐阅读