1
時,我有Dateframe df
的列Close_open
:無法正確值分配到新列,使用布爾索引(熊貓)
Date
2010-02-11 0.00
2010-02-12 0.23
2010-03-19 0.02
2010-04-12 0.05
2010-04-13 0.15
2010-05-07 0.09
2010-05-12 0.03
2010-05-26 0.02
2010-06-18 -0.03
2010-06-22 -0.03
我試圖創建新列,Changed
其值當Close_open
列中的符號發生變化時(從正向負向或負向正向變化),則爲真。
我試了下面的代碼,但我得到所有的錯誤,當我應該得到至少一個真實。
for i in range(1,10):
df['Changed'] =abs((df['close_open'][i]) +(df['close_open'][i-1])) < abs(df['close_open'][i])
結果=
Date Changed
2010-02-11 False
2010-02-12 False
2010-03-19 False
2010-04-12 False
2010-04-13 False
2010-05-07 False
2010-05-12 False
2010-05-26 False
2010-06-18 False
2010-06-22 False
然而,當運行此代碼(相同的代碼,只不分配給一個DF列)
for i in range(1,10):
abs((df['close_open'][i]) +(df['close_open'][i-1])) < abs(df['close_open'][i])
我得到以下輸出:
False
False
False
False
False
False
False
True
False
謝謝。這也適用。僅僅爲了學習的目的,有什麼辦法可以讓這個布爾過濾器工作:abs((df ['close_open'] [i])+(df ['close_open'] [i-1]))
Moondra
您只需要在左側添加'[i]':'df ['Changed'] [i]'。發生的情況是整列都被重寫了,所以你只是在所有行中看到i = 9的結果(如果你確實在範圍內(1,9),它在所有行中都是真的)。注意:不是推薦的方法,但它可以在此工作,僅用於學習目的。 – JohnE
啊,我明白了。謝謝。 – Moondra