Ich habe die meisten SettingWithCopy Warnungen mit .loc[: (foo, bar)]
Konstruktion vermieden.Unerwarteter SettingWithCopyWarning
Aber ich weiß nicht, wie man richtig einen Fall konstruieren:
for sec in security_list:
stochs.loc[:, (sec,'entry_signal')][stochs[sec, 'raw_signal'].shift(1) == stochs[sec, 'raw_signal']] = 0
Was ich bin versucht: in dem stochs
Datenrahmen, um eine neue Spalte hinzufügen, entry_signal
. entry_signal
ist 1, 0 oder -1. Es ist 0, wenn die raw_signal
unverändert von der vorherigen raw_signal
ist, ansonsten ist es der Wert raw_signal
(1 oder -1).
Ich denke, Pandas mag nicht das zweite Indexierungsfragment, [stochs[sec, 'raw_signal'].shift(1) == stochs[sec, 'raw_signal']]
, weil das eine Kopie hervorbringt.
Kann jemand empfehlen, diese Anweisung richtig zu schreiben?
Dank
Versuch 'stochs.loc setzen sollte [ stochs [sec, 'raw_signal']. shift (1) == stochs [sek, 'raw_signal'], (sec, 'entry_signal')] = 0' – EdChum
@EdChum Ja, das hat funktioniert. Wusste nicht, dass eine solche Indizierung funktionieren würde. Vielen Dank. – user3556757