我有這個例子 df
col1 = [1,1,1,2,2,1,1,1,2,2,2]
col2 = [20, 23, 12, 44, 14, 42, 44, 1, 42, 62, 11]
data = {"col1": col1, "col2": col2}
df = pd.DataFrame(data)
我需要添加一個列,每次 col1 為 1 時將 col2 加起來,然后在 col1 為 2 時加起來。我嘗試按 col1 分組,但每次之間有 2 時都會跳過預期的輸出將是這個.
col1 col2 col3
1 20 55
1 23 55
1 12 55
2 44 58
2 14 58
1 42 87
1 44 87
1 1 87
2 42 115
2 62 115
2 11 115
請讓我知道如何解決這個問題
uj5u.com熱心網友回復:
GroupBy.transform與 helper一起使用Series由不相等和累積和的比較移位值生成的連續值:
df['col3'] = df.groupby(df['col1'].ne(df['col1'].shift()).cumsum())['col2'].transform('sum')
print (df)
col1 col2 col3
0 1 20 55
1 1 23 55
2 1 12 55
3 2 44 58
4 2 14 58
5 1 42 87
6 1 44 87
7 1 1 87
8 2 42 115
9 2 62 115
10 2 11 115
uj5u.com熱心網友回復:
您可以通過創建一個列來執行此操作,該列將在 col1 每次發生更改時進行標記,然后按 groupby 求和:
i = df.col1
df['Var3'] = i.ne(i.shift()).cumsum()
df['sums'] = df.groupby(['Var3'])['col2'].transform('sum')
這使
col1 col2 Var3 sums
0 1 20 1 55
1 1 23 1 55
2 1 12 1 55
3 2 44 2 58
4 2 14 2 58
5 1 42 3 87
6 1 44 3 87
7 1 1 3 87
8 2 42 4 115
9 2 62 4 115
10 2 11 4 115
?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/484205.html
