Can';在使用布尔索引(Pandas)时,不能将值正确分配给新列

Can';在使用布尔索引(Pandas)时,不能将值正确分配给新列,pandas,boolean,Pandas,Boolean,我有一列日期框df的Close\u 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\u o

我有一列日期框
df
Close\u 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\u open
列中的符号发生变化(从正变为负,反之亦然)时,该列的值为true

我尝试了下面的代码,但我得到了所有的错误,而我应该得到至少一个正确的

for i in range(1,10):
        df['Changed'] =abs((df['close_open'][i]) +(df['close_open'][i-1])) < abs(df['close_open'][i])
但是,当我运行此代码时(相同的代码,只是没有分配给df列)


我建议这样做:

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
df['changed']=df['close\u open']*df['close\u open'].shift()<0
关闭/打开已更改
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假

谢谢。这同样有效。为了便于学习,是否有任何方法可以让这个布尔过滤器在没有我尝试使用的for循环的情况下工作
abs((df['close\u open'][i])+(df['close\u open'][i-1]))
?谢谢。您只需在左侧添加
[i]
df['Changed'][i]
。发生的情况是,每次都会重新写入整个列,因此您只能看到所有行中i=9的结果(如果您设置了范围(1,9),则所有行中的结果都是正确的)。注意:这不是一个推荐的方法,但在这里它会起作用,而且只是为了学习。啊,我明白了。非常感谢。
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
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