Ich habe ein DF nach unten:Pandas Summe aus Teilmenge Reihen und Wiederzusammenführen in DF
id_var1 id_var2 num_var1 num_var2
1 1 1 1
1 2 1 0
1 3 2 0
1 4 2 3
1 5 3 3
1 6 3 3
1 7 3 0
1 8 4 0
2 1 1 0
2 2 2 1
2 3 5 0
2 4 2 0
2 5 1 2
2 6 1 2
2 7 2 0
Ich möchte ein DF mit folgender Erscheinung:
id_var1 id_var2 num_var1 num_var2 row_sum
1 1 1 1 2
1 2 1 0 NaN
1 3 2 0 Nan
1 4 2 3 11
1 5 3 3 Nan
1 6 3 3 Nan
1 7 3 0 Nan
1 8 4 0 Nan
2 1 1 0 Nan
2 2 2 1 7
2 3 5 0 Nan
2 4 2 0 Nan
2 5 1 2 4
2 6 1 2 Nan
2 7 2 0 Nan
An jedem ersten num_var2 was nicht 0 ist Ich möchte sum (num_var1) die selbe Zeile + so viele Zeilen runter wie num_var2 states.
Example1: Zeile 4 hat num_var2 = 3 -> sum (num_var1) für die Zeile 4 + 3 Zeilen nach unten 11 = für id_var1 = 1 und id_var2 = 4
Example2: Reihe 12 hat num_var2 = 2 -> sum (num_var1) für die Zeile 12 + 2 Zeilen nach unten = 4 für id_var1 = 2 und id_var2 = 5.
Kann mir bitte jemand dabei helfen? Kann es ohne eine langsame Zeilen-Iteration gemacht werden?
-Code für DF unter:
df = pd.DataFrame({ 'id_var1' : [1] * 8 + [2] * 7
,'id_var2' : [i for i in range(1,9)] + [i for i in range(1,8)]
,'num_var1' : [1,1,2,2,3,3,3,4] + [1,2,5,2,1,1,2]
,'num_var2' : [1, 0,0,3,3,3,0,0] + [0,1,0,0,2,2,0]
})
hat den Trick, danke! – swepab