Python-替换条件匹配的前2行

Python-替换条件匹配的前2行,python,pandas,Python,Pandas,我需要将B的前2个匹配项替换为-1 > import pandas as pd > df = pd.DataFrame({'A':xrange(1,10),'B':xrange(0,9)}) > print df A B 0 1 0 1 2 1 2 3 2 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9 8 我试过做df.B[df.A%2==0][0:2]=-1或df[“B”][df.A%2==0][0:

我需要将B的前2个匹配项替换为
-1

> import pandas as pd
> df = pd.DataFrame({'A':xrange(1,10),'B':xrange(0,9)}) 
> print df   
   A  B
0  1  0
1  2  1
2  3  2
3  4  3
4  5  4
5  6  5
6  7  6
7  8  7
8  9  8
我试过做
df.B[df.A%2==0][0:2]=-1
df[“B”][df.A%2==0][0:2]=-1
-这不会导致错误,甚至不会替换?可能会出什么问题


但是,当我尝试
df.B[df.A%2==0]=-1
-时,它正在工作(但将所有匹配项替换为
-1
)。

之所以会这样,是因为您使用了数据,并且获得了数据的副本,而不是原始数据。发件人:

由于链式索引是2个调用,因此可能 由于数据的切片方式,可能会返回数据的副本。因此 设置时,实际上是在设置副本,而不是原始副本 帧数据。熊猫不可能弄明白这一点,因为 它们是两个未连接的单独python操作

您可以使用一个切片解决您的问题:

> print output
   A  B
0  1  0
1  2  -1
2  3  2
3  4  -1
4  5  4
5  6  5
6  7  6
7  8  7
8  9  8  
mask = df.A%2 == 0
idx = mask[mask].index
df.B[idx[:2]] = -1

In [91]: df
Out[91]:
   A  B
0  1  0
1  2 -1
2  3  2
3  4 -1
4  5  4
5  6  5
6  7  6
7  8  7
8  9  8

In [92]: mask
Out[92]:
0    False
1     True
2    False
3     True
4    False
5     True
6    False
7     True
8    False
Name: A, dtype: bool

In [93]: idx
Out[93]: Int64Index([1, 3, 5, 7], dtype='int64')