Python-替换条件匹配的前2行
我需要将B的前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:
-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')