我有数据框
a=pd.DataFrame([[1,1,9],[2,1,9],[3,2,9],[4,2,9]],columns=['a','b','c'])
a b c
0 1 1 9
1 2 1 9
2 3 2 9
3 4 2 9
如果我运行
a['c'].iloc[0]=100
它起作用了,我明白了
a b c
0 1 1 100
1 2 1 9
2 3 2 9
3 4 2 9
但是如果我想通过运行来更新组b == 2的第一个观察结果
a['c'][a['b']==2].iloc[0]=100
它不执行我想要的操作。我仍然得到相同的数据框。
a b c
0 1 1 100
1 2 1 9
2 3 2 9
3 4 2 9
我想知道为什么吗?对此有什么可能的解决方案?
谢谢您的帮助。
答案 0 :(得分:0)
您应该像这样使用.loc
,有时.iloc
和.loc
会引起issue
Whether a copy or a reference is returned for a setting operation, may depend on the context. This is sometimes called chained> assignment and should be avoided
a.loc[a.index[a.b==2][0],'c']=10000
a
Out[761]:
a b c
0 1 1 9
1 2 1 9
2 3 2 10000
3 4 2 9