Good morning everyone.

I have the following data:


    import pandas as pd
    
    info = {
    'states': [-1, -1, -1, 1, 1, -1, 0, 1, 1, 1],
    'values': [34, 29, 28, 30, 35, 33, 33, 36, 40, 41] }
    
    df = pd.DataFrame(data=info)
    
    print(df)
    
    >>> 
        states   values
    0       -1       34
    1       -1       29
    2       -1       28
    3        1       30
    4        1       35
    5       -1       33
    6        0       33
    7        1       36
    8        1       40
    9        1       41


I need to group the data **using PANDAS** (and/or higher order functions) (*already did the exercise using for loops*), I need to group the data having the "states" column as a guide. But the grouping should not be of all the data, I only need to group the data that is neighboring... as follows:

Initial DataFrame:

       estados  valores
    0       -1       34 ┐
    1       -1       29 │    Group this part (states = -1)
    2       -1       28 ┘
    3        1       30 ┐    Group this part (states =  1)
    4        1       35 ┘
    5       -1       33     'Group' this part (states = -1)
    6        0       33     'Group' this part (states =  0)
    7        1       36 ┐
    8        1       40 │    Group this part (states =  1)
    9        1       41 ┘

It would result in a DataFrame, with a grouping by segments (from the "states" column) and in another column the sum of the data (from the "values" column).

Expected DataFrame:

        states   values
    0       -1       91     (values=34+29+28)
    1        1       65     (values=30+35)
    2       -1       33
    3        0       33
    4        1       117    (values=36+40+41)

You who are more versed in these issues, perhaps you can help me perform this operation.

***Thank you so much!***