Я хотел бы изменить значение атрибута в соответствии с таблицей Excel.
Я пишу следующий код, но новое добавленное поле не может изменить значение.
Исходный шейп-файл имеет только одно поле .
import pandas as pd
file='/home/xj/Research/Data/Map/province.csv'
add = pd.read_csv(file)
for i in range(0,len(add)):
add_name = add.iloc[i,2]
add_code = add.iloc[i,1]
print(add_code,add_name,type(add_name))
uri = '/home/xj/Research/Data/Map/Province/'+add_name+'.shp'
layer = iface.addVectorLayer(uri, '', 'ogr')
layer_provider=layer.dataProvider()
layer_provider.addAttributes([QgsField("PCode",QVariant.Double)])
layer_provider.addAttributes([QgsField("PName",QVariant.String)])
layer.updateFields()
layer.startEditing()
features = layer.getFeatures()
for f in features:
id=f.id()
attr_value={1:add_name}
layer_provider.changeAttributeValues({id:attr_value})
attr_code={2:add_code}
layer_provider.changeAttributeValues({id:attr_code})
layer.commitChanges()
QgsProject.instance().removeAllMapLayers()
print(f"done!")