是否根据同一行中的另一列值替换熊猫数据帧中列中的值



我有一个包含两列的数据帧。A列包含值0和1,B列包含值"0"one_answers"99"。像这样:

df = pd.DataFrame({'A': [0,0,0,1,1,0,0,1,1,0], 
'B': [99,1,0,99,99,1,1,99,99,99]})
A   B
0  0  99
1  0   1
2  0   0
3  1  99
4  1  99
5  0   1
6  0   1
7  1  99
8  1  99
9  0  99

当列A的对应值为1时,我需要将列B中的所有值99替换为0,我尝试了以下操作:

df = df[df['A']==1].replace({'B': {99: 0}})
A  B
3  1  0
4  1  0
7  1  0
8  1  0

但当尝试这样做时,我丢失了数据帧中A为0的部分。我怎样才能做到这一点而不丢失那一部分?

这里有一种方法可以实现

using Loc
df.loc[(df['A']== 1) & (df['B']==99), 'B'] = 0
df

# using mask
df['B']= df['B'].mask((df['A']== 1) & (df['B']==99), 0)
df
A   B
0   0   0
1   0   1
2   0   0
3   1   0
4   1   0
5   0   1
6   0   1
7   1   0
8   1   0
9   0   0

最新更新