我正在努力用一个简单的布尔公式的输出重新填充一个df列。你知道吗
以下是我的数据示例:
Close RSI_14 MACD upper_BBAND lower_BBAND middle_BBAND
33 1.26470 5.0 1.0 1.26601 1.26456 0.0
34 1.26495 6.0 1.0 1.26566 1.26468 0.0
35 1.26555 6.0 1.0 1.26573 1.26456 1.0
36 1.26680 7.0 1.0 1.26682 1.26386 1.0
37 1.26735 7.0 1.0 1.26781 1.26366 1.0
38 1.26725 7.0 1.0 1.26812 1.26428 1.0
39 1.26730 7.0 1.0 1.26798 1.26526 1.0
40 1.26725 7.0 1.0 1.26736 1.26656 1.0
41 1.26755 7.0 1.0 1.26745 1.26701 1.0
42 1.26745 7.0 1.0 1.26766 1.26718 1.0
43 1.26705 6.0 1.0 1.26784 1.26716 0.0
44 1.26685 6.0 1.0 1.26797 1.26695 0.0
45 1.26680 6.0 1.0 1.26797 1.26674 0.0
46 1.26765 7.0 1.0 1.26799 1.26665 1.0
47 1.26750 6.0 1.0 1.26803 1.26665 1.0
48 1.26685 6.0 1.0 1.26804 1.26658 0.0
49 1.26650 5.0 1.0 1.26807 1.26631 0.0
我想从公式中推断出一个二进制信号。信号应存储在上和下两列中,并基于以下伪码:
填充上和列的伪代码:
For i in len(Close):
if middle_BBAND[i] == 1 and Close[i] < upper_BBAND[i]:
upper_BBAND[i] = 1
elif middleBBAND[i] == 1 and Close[i] > upper_BBAND[i]:
upper_BBAND[i] = 0
用于填充低位和列的伪代码:
For i in len(Close):
if middle_BBAND[i] == 0 and Close[i] > lower_BBAND[i]:
lower_BBAND[i] == 0
elif middle_BBAND[i] == 0 and Close[i] < lower_BBAND[i]:
lower_BBAND[i] == 1
所需的输出如下:
Close RSI_14 MACD upper_BBAND lower_BBAND middle_BBAND
39 1.26730 7.0 1.0 1.0 0.0 1.0
40 1.26725 7.0 1.0 1.0 0.0 1.0
41 1.26755 7.0 1.0 0.0 0.0 1.0
42 1.26745 7.0 1.0 0.0 0.0 1.0
43 1.26705 6.0 1.0 0.0 0.0 0.0
44 1.26685 6.0 1.0 0.0 0.0 0.0
45 1.26680 6.0 1.0 0.0 1.0 0.0
我正在努力让熊猫识别这个伪for循环。。有什么建议吗?你知道吗
另一种选择是使用DataFrame.where:
读起来有点难,但在大数据帧上应该更快。你知道吗
如果您刚刚在dataframe中定义了列,而没有将它们定义为自己,那么
Close
就不作为变量存在;您必须调用df['Close']
或df.Close
。但是您应该使用apply
,而不是执行for循环:相关问题 更多 >
编程相关推荐