【问题标题】:How to get the value of the cell from np.where() instead of True/False如何从 np.where() 而不是 True/False 获取单元格的值
【发布时间】:2020-06-08 21:16:19
【问题描述】:

您好,我正在尝试让我的代码打印“位置”列中单元格的值,例如,如果“位置”中的前一个单元格很长,它也应该放长,直到它根据“信号”列将返回买入或卖出或“无”。但是,当我这样做时,我实际上得到的是真或假,我假设基于“长”或短“但我对此并不陌生,所以我可能会弄错。代码做我想要的,如果我们正确选择是长还是短,但是我希望它返回“长”或“短”上面单元格中的值,而不是返回 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.x pandas numpy


    【解决方案1】:

    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])
    

    【讨论】:

    • 如何选择该数组的第一个元素?
    • 我不确定你指的是哪一个,但我猜这个:a[mask][0]
    • 对不起,我的意思是说我想让它变得动态,所以像 Mask[:72] 这样的东西供参考,这是我得到的数组 (array([ 72, 135, 193, 197, 203, 360, 374, 407, ....]
    猜你喜欢
    • 1970-01-01
    • 2020-06-17
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多