I have two DataFrames (first, second):
| index_first | value_1 | value_2 |
|---|---|---|
| 0 | 100 | 1 |
| 1 | 200 | 2 |
| 2 | 300 | 3 |
| index_second | value_1 | value_2 |
|---|---|---|
| 0 | 50 | 10 |
| 1 | 100 | 20 |
| 2 | 150 | 30 |
Next I concat the two DataFrames with keys:
z = pd.concat([first, second],keys=['x','y'])
My goal is to calculate the cumulative sum of value_1 and value_2 in z considering the keys.
So the final DataFrame should look like this:
| index_z | value_1 | value_2 |
|---|---|---|
| x,0 | 100 | 1 |
| x,1 | 300 | 3 |
| x,2 | 600 | 6 |
| y,0 | 50 | 10 |
| y,1 | 150 | 30 |
| y,2 | 300 | 60 |
Advertisement
Answer
Use GroupBy.cumsum by first level created by keys from concat:
df = z.groupby(level=0).cumsum()
print (df)
value_1 value_2
index_first
x 0 100 1
1 300 3
2 600 6
y 0 50 10
1 150 30
2 300 60