Tengo una capa hecha de un campo con valores de cadena repetidos ("edificio") y un campo con valores de flotación ("superficie plana"). Me gustaría escribir un script para hacer algunas operaciones aritméticas (como la suma, el máximo y el mínimo, etc.) sobre todos los valores de la columna B que están asociados a los mismos valores de la columna A, pero no funciona.
Conjunto de datos:
BUILDING FLATSURF SUM (wanted result)
1 40.0 115 (i.e. 40+45+30 m^2)
1 45.0 115
1 30.0 115
2 200.0 300 (i.e. 200+100 m^2)
2 100.0 300
3 60.0 140 (i.e. 60+80 m^2)
3 80.0 140
Juicio en clave:
building=layer.dataProvider().fieldNameIndex('BUILDING')
flatssurface=layer.dataProvider().fieldNameIndex('FLATSURF')
uniquevalues=layer.uniqueValues(building,limit=10000)
for uv in uniquevalues:
feat=layer.getFeatures()
for f in feat:
tot=sum([flatssurface])
print tot
sin embargo, sólo devuelve el índice de la superficie de los planos de campo (f[1]). Para simplificar, descuidé la parte de añadir el campo pero sólo intenté imprimir los resultados, para comprobar si funcionaba. Si es posible, no necesito respuestas relacionadas con GroupStats ( ¿Calcular la suma de las partes de la columna en base a otra columna usando la Calculadora de Campo QGIS? ) o SQL o estadísticas ( https://gis.stackexchange.com/editing-help ) pero sólo busco una solución relacionada con Python.