Skip to main content
 首页 » 编程设计

python之更新 Pandas Dataframe 列 A 中的所有值,仅当 B 中的值不为零时才使用列 B 的值

2025年05月04日21飞鱼

我之前的代码用 A 中的值更新 B 中的所有值,其中 B 为零

dft = pd.DataFrame( 
                    np.array([ 
                                ['Unknown', 0], ['Unknown', 'CORP'], ['Unknown', 'GOVT'], ['Unknown', 0] 
                            ]), columns=['A', 'B'] 
                  ) 
print(dft) 
mask = dft['B'] == '0' 
dft.loc[mask, 'B'] = dft['A'] 
 
         A     B 
0  Unknown     0 
1  Unknown  CORP 
2  Unknown  GOVT 
3  Unknown     0 
 
         A        B 
0  Unknown  Unknown 
1  Unknown     CORP 
2  Unknown     GOVT 
3  Unknown  Unknown 

但我想做相反的事情,并用 B 中的所有非零值更新 A。我可以用 B 更新整个 A,但我想保留 A 中的现有值,因为替换为零没有帮助

期望的结果:

         A     B 
0  Unknown     0 
1  CORP     CORP 
2  GOVT     GOVT 
3  Unknown     0 

请您参考如下方法:

使用DataFrame.where .替换列:

dft = dft.where(dft['B'] == '0', dft.B, axis=0) 
print (dft) 
         A     B 
0  Unknown     0 
1     CORP  CORP 
2     GOVT  GOVT 
3  Unknown     0 

但是,仅替换 A 列:

dft['A'] = dft['A'].where(dft['B'] == '0', dft.B) 
#dft.loc[dft['B'] !='0','A'] = dft['B'] 
 
print (dft) 
         A     B 
0  Unknown     0 
1     CORP  CORP 
2     GOVT  GOVT 
3  Unknown     0