Skip to main content
 首页 » 编程设计

python之如果该行为空,则用另一列的值更新一列

2025年05月04日23bluestorm

我有包含 2 列扇区和扇区名称的数据框,我想更新“扇区”=“扇区名称”的值,其中“扇区”为空白

我有以下脚本,但它给出错误“ValueError:无法从重复轴重新索引”

dataFinal.loc[dataFinal['Sector'] == '', 'Sector'] = \ 
           dataFinal.loc[dataFinal['Sector Name'] != '', 'Sector Name'] 

请帮忙。

请您参考如下方法:

我认为最好的方法是创建唯一索引,然后使用 loc , mask或 where倒置条件:

dataFinal = dataFinal.reset_index(drop=True) 
#John Gals dol from comment  
dataFinal.loc[dataFinal['Sector'] == '', 'Sector'] = dataFinal['Sector Name'] 

或者:

m = dataFinal['Sector'] == '' 
dataFinal['Sector'] = dataFinal['Sector'].mask(m, dataFinal['Sector Name']) 

m = dataFinal['Sector'] != '' 
dataFinal['Sector'] = dataFinal['Sector'].where(m, dataFinal['Sector Name']) 

示例:

dataFinal = pd.DataFrame({'Sector':['a','ss',''], 
                         'Sector Name':['r','t','y']}, index=[4,4,1]) 
print (dataFinal) 
  Sector Sector Name 
4      a           r 
4     ss           t 
1                  y 
 
dataFinal = dataFinal.reset_index(drop=True) 
 
m = dataFinal['Sector'] == '' 
dataFinal['Sector'] = dataFinal['Sector'].mask(m, dataFinal['Sector Name']) 
print (dataFinal) 
  Sector Sector Name 
0      a           r 
1     ss           t 
2      y           y