與此類似的問題
Pandas groupby 將每個組視為一個唯一組
但是應該使用不斷變化的布林值 1、0 來獲取另一列的 cumsum,而不是 df['dir'] 的 cumsum。
我想要的輸出 - 隨著布林值的變化,我想要 new_exist 的新累積總和
df = pd.DataFrame({"dir":[1,1,1,1,0,0,0,1,1,1,1,0,0,0],
"grp": [1,2,3,4,1,2,3,1,2,3,4,1,2,3,],
"new_exist":[0.1,0.2,0.5,1,1,2,1,1,2,2,4,1,2,3,],
"new_exist_cum":[0.1,0.3,0.8,1.8,1,3,4,1,3,5,4,5,7,10,] })
uj5u.com熱心網友回復:
IIUC,使用自定義組(來自“dir”值的變化)和groupby cumsum另一列(此處為“col2”):
group = df['dir'].ne(df['dir'].shift()).cumsum()
df['new'] = df.groupby(group)['col2'].cumsum()
輸出:
dir col2 new
0 1 0 0
1 1 1 1
2 1 2 3
3 1 3 6
4 0 4 4
5 0 5 9
6 0 6 15 # example: 4 5 6
7 1 7 7 # new group, restart cumsum
8 1 8 15
9 1 9 24
10 1 10 34
11 0 11 11
12 0 12 23
13 0 13 36
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/429573.html
下一篇:計算多列中值的所有組合
