python-3.x - 如何从 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"))
解决方案
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])
推荐阅读
- php - Fat Free Framework - 通过重定向清除的 Flash 消息
- ansible - 如何成为root然后远程执行脚本
- r - 将聚合与自定义函数一起使用(使用基于另一列的值)
- python - Scrapy IndexError:列表索引超出范围
- c# - 如何通过 Avalonia 0.8.3 在 Visual Studio 2019 中成功使用 DataGrid 控件
- python - 在 pyttsx3 中使用 32 位语音
- swift - 如何从 Healthkit 中查询每日总步数并显示到 SwiftUI 文本视图中?
- node.js - NerManager(来自 nlp.js)错误地提取了系统(“预训练”)实体等实体
- java - 是否可以使用 Camel 的“计时器”组件中的属性来修改用于定期轮询的 sql 选择(按时间戳)?
- java - 我的应用程序显示“应用程序可能在其主线程上做了太多工作。”,我不知道代码的哪一部分导致了这种情况