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:
states values
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!