【发布时间】:2021-06-30 06:21:36
【问题描述】:
我有以下问题,我不确定如何以可接受的性能解决。
例子:
我有一个列表,其中包含 2 个日期之间股票的所有收盘价,比方说
close_price = [1, 2, 5, 3, 10, 1]
而且我也有一个只有 True 和 False 的数组,如果它是一个购买单,则它具有 True。
buy_ind = [False, True, False, False, True, False]
所有的滥用都在 pandas.DataFrame 中。
如果没有更好的 for 循环,我怎么能说这样的话?
我想检查 close_price 中在 buy_ind 中为 True 的所有元素(使用 np.where()),我想检查其中哪一个满足我的条件,然后转到下一个。
最后,我将得到一个包含所有卖出信号的数组。
谁能告诉我如何在不使用 for 循环的情况下解决这个问题,只遍历所有数组并检查条件?还是只有这样?
更新:
例子:
df['close'] = [1, 4, 5, 3, 1, 2]
df['buy'] = [False, True, False, False, True, False]
df['indicator'] = [3.1, 5.3, 0.3, 0.1, 6.2, 8.5, 9.0]
df['sell'] = [False,False,False,False,False,False]
我想要的是。
- 循环整体“收盘价”
- 在“购买”列中找到第一个为 True 的(例如,在我们的例子中是索引 1 中的值 4)
- 从同一索引上的“指标”列中获取值(在我们的例子中为 5.3)
- 检查以下哪个“收盘”价格将满足将使用 5.3 作为参数的某些条件
- 当你找到第一个满足条件的值时停止并将'sell'的索引设置为True
例如:如果我们从“收盘”价格 4 开始,相应地具有 5.3 值 indicator。我们将检查所有满足条件 (5.3) 的价格,例如指数 3 的“收盘”价格 3 是否满足
条件我们将设置索引为 'sell' True => [False,False,False,True,False,False]
- 转到下一个收盘价并重复该过程
【问题讨论】:
-
我会制作一个数据框。
df包含两列数据,然后使用df['new column'] = df.apply(func)创建第三列,其中func是一个函数,它采用两个原始列中的值的元组并返回您想要的任何内容。apply逐行应用你的函数 -
.apply(func)逐列应用函数。.apply(func, axis=1)逐行应用函数。 -
请添加输入数据帧的小样本以及预期数据帧的样子
-
@SamSzotkowski 和 @CameronRiddle 我不知道如何在我的情况下使用
apply -
@tdy 我已经添加了一个小解释,如果不是很清楚,请告诉我,我会尝试编辑它。
标签: python pandas numpy numpy-ndarray