¡Como Iterar en un DataFrame que cumpla con cierta condición de suma y de agrupamiento en python?

En esta ocasión cuento con el siguiente DataFrame “ascend”, el cual ordeno de manera ascendente por la columna “GEOCOD_SEG”:

    ascend = MZ_0806.sort_values(("GEOCOD_SEG"))
    ascend.head(10)

        ID  COD_MZA NRO_VIV DOMINIO TOTAL_VIV  COD_BAR_2     GEOCOD_SEG
    579 0   Mz-001  V-022     2         22         1       080601001001N00x001
    390 0   Mz-002  V-013     2         13         1       080601001001N00x002
    389 0   Mz-003  V-011     2         11         1       080601001001N00x003
    658 0   Mz-004  V-007     2         7          1       080601001001N00x004
    388 0   Mz-005  V-001     2         1          1       080601001001N00x005
    659 0   Mz-006  V-004     2         4          1       080601001001N00x006
    704 0   Mz-007  V-015     2         15         1       080601001001N00x007
    580 0   Mz-008  V-005     2         5          1       080601001001N00x008
    582 0   Mz-001  V-000     2         3          2       080601001002N00x001
    583 0   Mz-002  V-001     2         1          2       080601001002N00x002

Lo siguiente es crear una nueva columna “SUM_VIV”, en la que se aplicará la suma de los elementos del campo “TOTAL_VIV”, agrupado por el campo “COD_BAR_2”, y con la ayuda de la función transform, obtendré para cada fila del df original el resultado de la suma total de cada grupo.

    ascend('SUM_VIV') = ascend.groupby('COD_BAR_2')('TOTAL_VIV').transform(sum)
    ascend.head(10)

        ID  COD_MZA NRO_VIV TOTAL_VIV   COD_BAR_2     GEOCOD_SEG          SUM_VIV
    579 0   Mz-001  V-022       22         1      080601001001N00x001       78
    390 0   Mz-002  V-013       13         1      080601001001N00x002       78
    389 0   Mz-003  V-011       11         1      080601001001N00x003       78
    658 0   Mz-004  V-007       7          1      080601001001N00x004       78
    388 0   Mz-005  V-001       1          1      080601001001N00x005       78
    659 0   Mz-006  V-004       4          1      080601001001N00x006       78
    704 0   Mz-007  V-015       15         1      080601001001N00x007       78
    580 0   Mz-008  V-005       5          1      080601001001N00x008       78
    582 0   Mz-001  V-000       0          2      080601001002N00x001       72
    583 0   Mz-002  V-001       1          2      080601001002N00x002       72

Ahora bien.!! lo que busco es poder iterar para cada elemento de cada grupo “COD_BAR_2”, sumar los elementos de “TOTAL_VIV” respectivamente, y aplicar una condición de suma <= 50, osea que, habrán grupos que la suma total sera mayor a 50, por lo que necesito sub-dividir estos grupos en base a esta condición de suma. Lo que esperaría obtener seria algo así:

    ascend.head(10)

        ID  COD_MZA NRO_VIV TOTAL_VIV   COD_BAR_2     GEOCOD_SEG          SUM_VIV                  
    579 0   Mz-001  V-022       22         1      080601001001N00x001       46
    390 0   Mz-002  V-013       13         1      080601001001N00x002       46
    389 0   Mz-003  V-011       11         1      080601001001N00x003       46
    658 0   Mz-004  V-007       7          1      080601001001N00x004       32
    388 0   Mz-005  V-001       1          1      080601001001N00x005       32
    659 0   Mz-006  V-004       4          1      080601001001N00x006       32
    704 0   Mz-007  V-015       15         1      080601001001N00x007       32
    580 0   Mz-008  V-005       5          1      080601001001N00x008       32
    582 0   Mz-001  V-000       0          2      080601001002N00x001       35
    583 0   Mz-002  V-001       1          2      080601001002N00x002       35

Que operación o función necesito aplicar al df en cuestión?? Agradeceré mucho sus valiosos aportes, gracias de antemano.!!