Reputation: 4511
I have a column Close_open
of Dateframe df
:
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
I'm trying to create a new column, Changed
whose value is true when there is a change of sign (going from positive to negative or vice versa) in the Close_open
column.
I tried the following code, but I get all falses, when i should be getting at least one true.
for i in range(1,10):
df['Changed'] =abs((df['close_open'][i]) +(df['close_open'][i-1])) < abs(df['close_open'][i])
Result =
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
However, when I run this code (same code, only not assigning to a df column)
for i in range(1,10):
abs((df['close_open'][i]) +(df['close_open'][i-1])) < abs(df['close_open'][i])
I get the following output:
False
False
False
False
False
False
False
True
False
Upvotes: 1
Views: 39
Reputation: 30424
I'd recommend doing it like this:
df['changed'] = df['close_open'] * df['close_open'].shift() < 0
close_open changed
2010-02-11 0.00 False
2010-02-12 0.23 False
2010-03-19 0.02 False
2010-04-12 0.05 False
2010-04-13 0.15 False
2010-05-07 0.09 False
2010-05-12 0.03 False
2010-05-26 0.02 False
2010-06-18 -0.03 True
2010-06-22 -0.03 False
Upvotes: 2