Python 如果行为空,则使用另一列的值更新一列
我有两列数据框扇区和扇区名称,我想更新'Sector'='Sector Name'值,其中'Sector'为空 我有下面的脚本,但它的给定错误“ValueError:无法从重复轴重新编制索引”Python 如果行为空,则使用另一列的值更新一列,python,pandas,dataframe,Python,Pandas,Dataframe,我有两列数据框扇区和扇区名称,我想更新'Sector'='Sector Name'值,其中'Sector'为空 我有下面的脚本,但它的给定错误“ValueError:无法从重复轴重新编制索引” 请帮助。我认为最好的方法是创建唯一索引,然后使用,或者使用反转条件: dataFinal = dataFinal.reset_index(drop=True) #John Gals dol from comment dataFinal.loc[dataFinal['Sector'] == '', 'Se
请帮助。我认为最好的方法是创建唯一索引,然后使用,或者使用反转条件:
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'])
样本:
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
我认为最好是创建唯一的索引,然后使用,或者使用反转条件:
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'])
样本:
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
您可以使用
np.where
dataFinal['Sector'] = \
np.where(dataFinal['Sector'] == '', dataFinal['Sector Name'], dataFinal['Sector'])
感谢您提供的数据:
dataFinal
Sector Sector Name
4 a r
4 ss t
1 y
dataFinal['Sector'] = \
np.where(dataFinal['Sector'] == '', dataFinal['Sector Name'], dataFinal['Sector'])
dataFinal
Sector Sector Name
4 a r
4 ss t
1 y y
您可以使用
np.where
dataFinal['Sector'] = \
np.where(dataFinal['Sector'] == '', dataFinal['Sector Name'], dataFinal['Sector'])
感谢您提供的数据:
dataFinal
Sector Sector Name
4 a r
4 ss t
1 y
dataFinal['Sector'] = \
np.where(dataFinal['Sector'] == '', dataFinal['Sector Name'], dataFinal['Sector'])
dataFinal
Sector Sector Name
4 a r
4 ss t
1 y y
您可以使用掩码查找数据帧中
扇区
仅包含空白的所有行,然后使用此掩码应用相应的扇区名称
:
mask = dataFinal['Sector'].str.isspace()
dataFinal.loc[mask, 'Sector'] = dataFinal.loc[mask, 'Sector Name']
您可以使用掩码查找数据帧中
扇区
仅包含空白的所有行,然后使用此掩码应用相应的扇区名称
:
mask = dataFinal['Sector'].str.isspace()
dataFinal.loc[mask, 'Sector'] = dataFinal.loc[mask, 'Sector Name']
您不应该执行
dataFinal.loc[dataFinal['Sector']='','Sector']=dataFinal['Sector Name']
`@John Galt,感谢您的回复,在重置索引后,它的工作是否应该执行dataFinal.loc[dataFinal['Sector']='','Sector']=dataFinal['Sector Name']
`@John Galt,感谢您的回复,在重置数据后,索引其工作库+1谢谢你的数据+1.