我使用.loc[: (foo, bar)]
构建避免了大多数SettingWithCopy警告。
但我不知道如何正确构建一个案例:
for sec in security_list:
stochs.loc[:, (sec,'entry_signal')][stochs[sec, 'raw_signal'].shift(1) == stochs[sec, 'raw_signal']] = 0
我尝试做的事情:在stochs
数据框中添加一个新列entry_signal
。 entry_signal
是1,0或-1。如果raw_signal
与之前的raw_signal
保持不变,则为0,否则为raw_signal
(1或-1)的值。
我猜大熊猫不喜欢第二个索引片段[stochs[sec, 'raw_signal'].shift(1) == stochs[sec, 'raw_signal']]
,因为它产生了一个副本。
有人可以建议如何正确地重写这个陈述吗?
由于
答案 0 :(得分:2)
更改为:
stochs.loc[stochs[sec, 'raw_signal'].shift(1) == stochs[sec, 'raw_signal'], (sec,'entry_signal')] = 0
你做的是chained indexing,因为你是双重下标所以你应该把条件放在括号内loc