Python 2.7 添加列时的奇怪行为

Python 2.7 添加列时的奇怪行为,python-2.7,pandas,Python 2.7,Pandas,我使用的是Python 2.7.8 | Anaconda 2.1.0。我想知道为什么会出现下面这种奇怪的行为 我创建了一个包含两列的数据框架,然后通过对前两列求和来添加第三列 x = pd.DataFrame(np.random.randn(5, 2), columns = ['a', 'b']) x['c'] = x[['a', 'b']].sum(axis = 1) #or x['c'] = x['a'] + x['b'] Out[7]: a b

我使用的是Python 2.7.8 | Anaconda 2.1.0。我想知道为什么会出现下面这种奇怪的行为

我创建了一个包含两列的数据框架,然后通过对前两列求和来添加第三列

x = pd.DataFrame(np.random.randn(5, 2), columns = ['a', 'b'])
x['c'] = x[['a', 'b']].sum(axis = 1) #or x['c'] = x['a'] + x['b'] 
Out[7]: 
          a         b         c
0 -1.644246  0.851602 -0.792644
1 -0.129092  0.237140  0.108049
2  0.623160  0.105494  0.728654
3  0.737803 -1.612189 -0.874386
4  0.340671 -0.113334  0.227337
到目前为止一切都很好。现在我想将c列的值设置为零,如果它们是负数

x[x['c']<0] = 0
Out[9]: 
          a         b         c
0  0.000000  0.000000  0.000000
1 -0.129092  0.237140  0.108049
2  0.623160  0.105494  0.728654
3  0.000000  0.000000  0.000000
4  0.340671 -0.113334  0.227337

x[x['c']您必须指定只需要“c”列:

x.loc[x['c']<0, 'c'] = 0

x.loc[x['c']您必须指定您只需要“c”列:

x.loc[x['c']<0, 'c'] = 0

x.loc[x['c']您必须指定您只需要“c”列:

x.loc[x['c']<0, 'c'] = 0

x.loc[x['c']您必须指定您只需要“c”列:

x.loc[x['c']<0, 'c'] = 0

x.loc[x['c']因为您正在为所有列设置为零。您应该只为
c列设置它

x['c'][x['c']<0] = 0

x['c'][x['c']因为您正在为所有列设置为零。您应该只为
c列设置它

x['c'][x['c']<0] = 0

x['c'][x['c']因为您正在为所有列设置为零。您应该只为
c列设置它

x['c'][x['c']<0] = 0

x['c'][x['c']因为您正在为所有列设置为零。您应该只为
c列设置它

x['c'][x['c']<0] = 0

x['c'][x['c']
x.loc[x['c']
x.loc[x['c']
x.loc[x['c']
x.loc[x['c']这是链式索引,不保证有效:谢谢你的建议。我会确定的。是的,你放在这里的方式是有效的,但如果你改变两个
[…]
它失败了。因此,一般来说,最好使用
loc
来确保这是链式索引,并且不保证有效:谢谢你的建议。我会确定的。是的,你在这里放的方式是有效的,但是如果你改变两个
[…]的顺序
它失败了。因此,一般来说,最好使用
loc
来确保这是链式索引,并且不保证有效:谢谢你的建议。我会确定的。是的,你在这里放的方式是有效的,但是如果你改变两个
[…]的顺序
它失败了。因此,一般来说,最好使用
loc
来确保这是链式索引,并且不保证有效:谢谢你的建议。我会确定的。是的,你在这里放的方式是有效的,但是如果你改变两个
[…]的顺序
它失败。因此,一般来说,最好使用
loc
来确保